0

想象一个圆顶,其中心在 +z 方向。我想要做的是将圆顶的中心移动到不同的轴(例如 20 度 x 轴、20 度 y 轴、20 度 z 轴)。我怎样才能做到这一点 ?任何提示/提示都有帮助。

添加更多信息:

一段时间以来,我一直在 wiki 中涉足旋转矩阵。问题是,它不是交换操作。RxRyRz 与 RzRyRx 不同。因此,根据我的倍数方式,我得到了不同的最终结果。例如,我希望我的最终投影与原始 X 轴成 20 度,与原始 Y 轴成 20 度,与原始 Z 轴成 20 度。根据矩阵,给定 alpha、beta、gamma 值 20(或其对应的弧度)不会导致预期的旋转。我错过了什么吗?有没有一个矩阵可以让我把预期的角度放在最后?

4

1 回答 1

0

使用旋转矩阵是旋转 (x,y,z) 点集合的简单方法。您可以使用一般旋转部分中的方程式计算您的情况的旋转矩阵。请注意,找出插入这些方程的角度值可能很棘手。把它想象成一次绕一个轴旋转,记住你的旋转顺序(乘法顺序)确实很重要。

一般旋转方程的替代方法是从轴和角度计算旋转矩阵。使用此方法定义正确的参数可能更容易。

更新:阅读维基百科后,我找到了一种计算两个向量之间的旋转轴和角度的简单方法。只需在此处填写您的开始和结束a向量b

a = [0.0 0.0 1.0];
b = [0.5 0.5 0.0];
vectorMag = @(x) sqrt(sum(x.^2));
rotAngle = acos(dot(a,b) / (vectorMag(a) * vectorMag(b)))
rotAxis = cross(a,b)

rotAxis =
    -0.5          0.5            0
rotAngle =
    1.5708
于 2013-02-01T14:11:09.253 回答