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

时间:2011-01-10 00:05:08

标签: math vector trigonometry angle

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

我有指向的方向,由三个角度表示 - 每个旋转角度一个(在X中旋转,在Y中旋转,在Z中旋转)(为了示例,我们假设我是其中之一用笔标记旧徽标的乌龟)以及我指向的方向。

我如何计算终点坐标?

我知道2D系统很简单:

new_x = old_x + cos(angle) * distance
new_y = old_y + sin(angle) * distance

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

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

3 个答案:

答案 0 :(得分:7)

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

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

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

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

Y = y0 +距离* sin(Anglez)

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

答案 1 :(得分:4)

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

我做了一些3D坐标转换的介绍,我认为它会回答你的问题。

3D坐标

3D coordinates

答案 2 :(得分:2)

首先,有三个角度来表示方向很奇怪 - 两个就足够了。其次,结果取决于您转动各轴的顺序。关于不同轴的旋转不会通勤。

可能您只是在寻找conversion between spherical and Cartesian coordinates