计算向量沿任意法线的距离

时间:2021-01-18 14:00:07

标签: math vector 3d

我正在尝试创建一个函数,用于通过拖动鼠标沿法线挤出面。出于这个问题的目的,我已将事物简化为 2D 向量,以便视图向下看立方体,法线是要挤出的面部。

我可以很容易地通过面部法线方向限制鼠标的移动,我的问题是如何计算出鼠标沿法线方向移动的正确距离。

我有两个向量(A 和 B1)。 A 是起点,B1 是当前鼠标位置(参见图像 Vector Normal Projection)。我需要投影 B1,使其指向 A 点的面法线方向。因此 B1 变为 B2。对于 Bx 的鼠标位置也是如此(Bx 需要从 A 沿法线投影,使其变为 B2)。这意味着无论鼠标位于 B1、B2 还是 Bx,它们都将沿法线方向给出相同的距离(在本例中为 2)。

我可能没有正确地处理这个问题,所以如果有更好的方法来解决这个问题,请告诉我。

谢谢。

编辑 - 已解决:

对于任何感兴趣的人,我通过将 A 点移动到我试图挤出的面的中心来解决这个问题,然后沿着面法线从 A 创建一个新边。然后,我可以通过执行点线相交计算(B1 或 Bx 到新边缘)来计算从鼠标位置(B1 或 Bx)到 A 的距离。该交点返回的点是从 A 到 B 的正确距离。这适用于 3D 中的任意面法线。

1 个答案:

答案 0 :(得分:0)

w=AB1 向量在具有归一化(单位长度)方向向量 AB2 的线 e 上的投影长度非常简单,使用点积:

L = (w.dot.e) 

如果您知道角度,也许您已经有了 e - 在 2D 中,它的组成部分是:

e = (cos(fi), sin(fi))