gpt4 book ai didi

math - 矢量方向的改变

转载 作者:行者123 更新时间:2023-12-02 07:11:57 31 4
gpt4 key购买 nike

给定两个指向不同方向的三个维度的向量。我希望第一个向量能够将方向改变为朝向第二个向量一定的度数。计算这个新向量的公式或算法是什么。

例如,一艘 spaceship (这是针对 spaceship 模拟器的)指向 (2,3,3) 的方向。船现在将向 (2,-3,-2) 的矢量方向改变 20 度。新的向量是什么。它不是沿轴旋转,而是与两个向量成直角。

最佳答案

假设您想将 A 旋转到 B。

取叉积 AxB = C 并将其归一化。

现在将 A 分成两个部分,一个与 C 平行,一个与 C 平行:

...

现在构造一个垂直于 A 和 C 的向量(具有正确的意义):

...

现在你可以构造旋转向量了:

...

编辑
我觉得自己像个白痴。正确的(也是更简单的)推导是

F = C x A

G = cos(theta) A + sin(theta) F

编辑:
这是通过简单的几何学来工作的。 C 垂直于包含 A 和 B 的平面。F 在平面中,并且垂直于 A。因此平面中的任何向量都是 A 和 F 的线性组合;也就是说,平面中的任何矢量 Z 都可以构造为 Z = aA + bF,其中 a 和 b 是数字,并且任何这样的和都将在平面中。 F 也具有与 A 相同的大小,因此如果我们构建

G = cos(theta) A + sin(theta) F

我们得到的是一个大小相同的向量,但与 A 相隔一个角度 theta。 (这不是很明显,但如果你稍微尝试一下,你会发现它有效。)

使用你的例子:

A = (2, 3, 3) (magnitude = 4.69)
B = (2, -3, -2)
C = AxB = (3, 10, -12) (magnitude = 15.906)

Now normalize:
C = (0.189, 0.629, -0.754) (magnitude = 1.0)

F = CxA = (4.149, -2.075, -0.692) (magnitude = 4.69)

theta = 20 degrees
G = cos(theta) A + sin(theta) F = (3.299, 2.109, 2.583) (magnitude = 4.69)

G与A、B在同一平面(垂直于C),A与G夹角为20度。 (A与B的夹角为124.7度,G与B的夹角为104.7度。)

关于math - 矢量方向的改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5123028/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com