Python 如果我有中点、角度和长度,就得到一条直线的端点
我有直线的角度和中点x,y以及想要的直线的长度,我如何向前得到点x1,y1和x2,y2,以便使用Cv2在点之间画一条线?只要使用公式:x=r*cos(θ),y=r*sin(θ)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
导入数学
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),将直线与线段的角度和距离联系起来,您可以应用公式并计算下一个坐标,从而绘制直线?