给定起点,每个旋转轴和方向的角度,计算终点

Nic*_*ell 9 math trigonometry vector angle

我有3D坐标的起点,例如(0,0,0).

我有指向的方向,由三个角度表示 - 每个旋转角度一个(X中的旋转,Y中的旋转,Z中的旋转)(为了示例,我们假设我是那些旧徽标龟之一用笔)和我将朝着指向的方向行进的距离.

我该如何计算终点坐标?

我知道2D系统很简单:

new_x = old_x + cos(angle) * distance
new_y = old_y + sin(angle) * distance
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何将其应用于3个维度

我想另一种思考方法是尝试在球体表面找到一个点,知道你指向的方向和球体的半径.

Kri*_*ael 7

首先,对于在3D中定位点,您只需要两个角度(就像您在2D中只需要一个角度一样)

其次,由于各种原因(慢速cos和罪恶,万向节锁定......),你可能想要首先将方向存储为矢量并完全避免角度.

无论如何,假设方向最初是z对齐的,则围绕x轴旋转,然后围绕y轴旋转.

x = x0 +距离*cos(angleZ)*sin(angleY)

Y = y0 +距离*sin(Anglez)

Z = z0 +距离*cos(angleZ)*cos(angleY)


ja7*_*a72 4

基于三个角度,您必须构建 3x3 旋转矩阵。那么矩阵的每一列代表局部的x、y和z方向。如果您想要移动的局部方向,请将 3x3 旋转与方向向量相乘,以获得全局坐标中的结果。

我对 3D 坐标变换做了一些介绍,我认为这可以回答您的问题。

3D坐标

3D坐标