在给定方向上找到向量的大小

时间:2014-12-14 19:24:41

标签: vector unity3d magnitude

我正在Unity3D中编写一个工具,它允许拖动点来调整形状的大小:

enter image description here

拖拽点只能沿曲面法线移动(即示例立方体不会变形,只会拉长)。

当然鼠标可以向任何方向拖动,所以我试图计算沿着法线表面拖动的距离。

目前我正在做以下事情:

public static float NormalMoveHandle(Vector3 position, Vector3 normal)
{
    Vector3 newPosition = FreeMoveHandle(position);
    Vector3 dragVector = newPosition - position;

    return Vector3.Dot(dragVector, normal) * dragVector.magnitude;
}

但是我得到了不可预知的结果:

http://i.gyazo.com/35f3fc4b4e0471f3c5d70097ddc6f79f.mp4

当拖动超过一小段距离时,该值将突然变为NaN:

enter image description here

如果我调整我的计算,我会得到更稳定的行为,但手柄变得迟钝。我相信这表明手柄是功能性的;问题出在我的数学上。

return Vector3.Dot(dragVector, normal);

我的量值计算是否有误?

0 个答案:

没有答案