Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果我有中点、角度和长度,就得到一条直线的端点_Python_Math - Fatal编程技术网

Python 如果我有中点、角度和长度,就得到一条直线的端点

Python 如果我有中点、角度和长度,就得到一条直线的端点,python,math,Python,Math,我有直线的角度和中点x,y以及想要的直线的长度,我如何向前得到点x1,y1和x2,y2,以便使用Cv2在点之间画一条线?只要使用公式:x=r*cos(θ),y=r*sin(θ) 导入数学 def管路(x0、y0、角度、长度): 一半长度=长度/2 弧度=角度/180*math.pi dx=半长*数学cos(弧度) dy=半长*数学sin(弧度) 返回((x0-dx,y0-dy),(x0+dx,y0+dy)) 以下是我的答案: import cv2 import math import numpy

我有直线的角度和中点x,y以及想要的直线的长度,我如何向前得到点x1,y1和x2,y2,以便使用Cv2在点之间画一条线?

只要使用公式:x=r*cos(θ),y=r*sin(θ)

导入数学
def管路(x0、y0、角度、长度):
一半长度=长度/2
弧度=角度/180*math.pi
dx=半长*数学cos(弧度)
dy=半长*数学sin(弧度)
返回((x0-dx,y0-dy),(x0+dx,y0+dy))
以下是我的答案:

import cv2
import math
import numpy as np


img = np.zeros((200,200),dtype=np.uint8)
img = cv2.bitwise_not(img)
img = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

angle = 45
angle = 180-angle
angle = angle/180*math.pi
midx,midy = (50,50)
length = 80

r = length/2

x1,y1 = int(midx+ r*math.cos(angle)), int(midy + r*math.sin(angle))
x2,y2 = int(midx-r*math.cos(angle)),int(midy - r*math.sin(angle))

print(x1,y1)
print(x2,y2)

cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)

cv2.imshow("line",img)
cv2.waitKey(0)
输出:

21 78
78 21


参数化形式:

使用参数化的直线形式(google it),将直线与线段的角度和距离联系起来,您可以应用公式并计算下一个坐标,从而绘制直线?