Math 按距离沿垂直坡度滑动两个点

Math 按距离沿垂直坡度滑动两个点,math,geometry,Math,Geometry,对于我当前的项目,用户点击X、Y平面上的两个位置。点击这两个点后,用户应单击并拖动,从原来的两个位置开始,将两个新点延伸到一个90度角的完美矩形中 数学似乎非常简单,我只是无法得到正确的配置,使这两个点沿着垂直坡度滑动一定距离 我目前的尝试是找到垂直坡度,并将其滑动X距离,即用户拖动的距离,但我一直在翻译perp。按距离倾斜 你有点A和点B。差分向量 D = (Dx, Dy) = (Bx - Ax, By - Ay) 归一化单位向量 Len = Sqrt(Dx*Dx + Dy*Dy) (dx

对于我当前的项目,用户点击X、Y平面上的两个位置。点击这两个点后,用户应单击并拖动,从原来的两个位置开始,将两个新点延伸到一个90度角的完美矩形中

数学似乎非常简单,我只是无法得到正确的配置,使这两个点沿着垂直坡度滑动一定距离

我目前的尝试是找到垂直坡度,并将其滑动X距离,即用户拖动的距离,但我一直在翻译perp。按距离倾斜


你有点A和点B。差分向量

D = (Dx, Dy) = (Bx - Ax, By - Ay)
归一化单位向量

 Len = Sqrt(Dx*Dx + Dy*Dy)
(dx, dy) = (Dx / Len, Dy / Len)  
(px, py) = (-dy, dx)
垂直单位向量

 Len = Sqrt(Dx*Dx + Dy*Dy)
(dx, dy) = (Dx / Len, Dy / Len)  
(px, py) = (-dy, dx)
按距离L移动

pL = (px * L, py * L)
所以移动的A将有坐标

 (a'x, a'y) = (Ax +/- px * L, Bx +/- py * L)
+或-用于两个可能的换档方向