【发布时间】:2021-04-02 07:23:05
【问题描述】:
我正在寻找以下问题的数学公式(在 3 维空间中,因此它大约是 3 维向量)。我在 Unity 中编程 - GameEngine (C#)
在第一张图片中,您可以看到我当前的结果。我创建了 2 个向量(红色球体)并自动生成一个锚点(图中的绿色)。这个锚点总是在第二个向量“后面”生成(在一条直线上)。这两个向量始终是当前向量和前一个向量。 我当前的计算(第一张图片)如下所示:
Vector3 direction = newVector.position - previousVector.position;
Vector3 newAnchor.position = newVector.position + direction;
我需要的是第二张图片。我希望始终在第二个向量的“右侧”90 度生成锚点(绿色)(相对于两个向量的方向)。但是,我无法为此进行数学计算。
希望我可以用图片来描述我试图实现的目标。
第一张图片:
第二张图:
【问题讨论】:
-
所以你想将
direction旋转90 度,然后再添加到newVector.position。 -
是的,我认为这可能是一个解决方案。 2. 围绕矢量旋转
-
你可以试试direction = Quaternion.Euler(0, 0, 90) * (-direction);然后将方向添加到 newVector.position。但是结果会被方向向量的大小抵消。然后,您可以更改其大小,因为您似乎总是希望锚点的长度相同。顺便说一句,如果 XZ 平面上的点那么你必须使用 Quaternion.Euler (0, 90, 0)。
标签: c# unity3d math vector calculation