vas*_*111 3 geometry 2d computational-geometry
线(x1,y1),(x2,y2)和(x3,y3),(x4,y4)是垂直的.我有点(x1,y1),(x2,y2),(x3,y3)的坐标和线(x3,y3),(x4,y4)的像素长度.我需要找到点(x4,y4)的坐标.请给我一个伪代码来计算(x4,y4).谢谢你提前.

解决了.多亏了数学家1975
x1 = 200
y1 = 400
x2 = 700
y2 = 200
dist = 20
x3 = (x1 + x2) / 2
y3 = (y1 + y2) / 2
a = y1 - y2
b = x2 - x1
norm = sqrt(a*a + b*b)
a = a / norm
b = b / norm
x4 = x3 + a * dist
y4 = y3 + b * dist
Run Code Online (Sandbox Code Playgroud)
计算向量A在哪里
A = (x2 - x1,y2 - y1)
Run Code Online (Sandbox Code Playgroud)
垂直于此的矢量由下式给出
B = (y1 - y2, x2 - x1)
Run Code Online (Sandbox Code Playgroud)
找到归一化的向量
C = B/|B|
Run Code Online (Sandbox Code Playgroud)
其中|B|只是B使用毕达哥拉斯计算的矢量模数
您的观点(x4,y4)将作为
(x4,y4) = (x3,y3) + K*C
Run Code Online (Sandbox Code Playgroud)
其中,K为线的长度(x3,y3)来(x4,y4)(你在,你知道这个问题说了).根据您的点的方向,您可能需要将K的值设置为
K = -K
Run Code Online (Sandbox Code Playgroud)
为了使要点符合您的需要.