如何获得垂直矢量给定的线段(闭合)(How to get perpendicular vectors

2019-09-28 05:54发布

如何获得点A,B,C,和d?

如果AB和CD都垂直于P0P1。

假设P0A,P0B,P1C和P1D有标准化的长度

Answer 1:

该线的方向由下式给出d = normalize(p1 - p0) 为了计算,我们可以使用叉积与垂直矢量(0, 0, 1) 这会导致:

d_left = (-d.y, d.x)
d_right = (d.y, -d.x)

你还没说你怎么坐标系对齐,所以d_left可能成为d_right ,反之亦然。

然后你可以得到想要的要点:

A = p0 + d_left
B = p0 + d_right
C = p1 + d_left
D = p1 + d_right


Answer 2:

假设rotate(p,d)是一个操作者转动p矢量d角度。

然后,如果的倾斜p0p1具有正x-axisx 。 然后,

A = P0 +旋转(P1-P0,P1 / 2)/ | P1-P0 |
B = P0 +旋转(P1-P0,-pi / 2)/ | P1-P0 |
C = P1 +旋转(P1-P0,P1 / 2)/ | P1-P0 |
d = P1 +旋转(P1-P0,-pi / 2)/ | P1-P0 |



文章来源: How to get perpendicular vectors given a line segment [closed]