我最好用图像解释我的问题
我有轮廓和线,它正在通过该轮廓。
在轮廓和直线的交点点处,我想在直线和轮廓的交点处绘制一条垂直线,直到特定距离。
我知道该线的交叉点点以及斜率
作为参考,我附上了这张图片。
答案 0 :(得分:7)
如果图片中的蓝线从A点变为B点,并且您想在B点绘制红线,则可以执行以下操作:
v.x = B.x - A.x; v.y = B.y - A.y;
mag = sqrt (v.x*v.x + v.y*v.y); v.x = v.x / mag; v.y = v.y / mag;
temp = v.x; v.x = -v.y; v.y = temp;
C.x = B.x + v.x * length; C.y = B.y + v.y * length;
(注意,通过简单地否定长度,可以通过在相反方向创建点D来使其在两个方向上延伸。)答案 1 :(得分:2)
这是我的函数版本:
def getPerpCoord(aX, aY, bX, bY, length):
vX = bX-aX
vY = bY-aY
#print(str(vX)+" "+str(vY))
if(vX == 0 or vY == 0):
return 0, 0, 0, 0
mag = math.sqrt(vX*vX + vY*vY)
vX = vX / mag
vY = vY / mag
temp = vX
vX = 0-vY
vY = temp
cX = bX + vX * length
cY = bY + vY * length
dX = bX - vX * length
dY = bY - vY * length
return int(cX), int(cY), int(dX), int(dY)