圆顶在任意轴上旋转?

时间:2013-02-01 13:46:07

标签: matlab 3d rotation linear-algebra

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

添加更多信息:

我一直在维基中使用旋转矩阵一段时间。问题是,它不是一个可交换的操作。 RxRyRz与RzRyRx不同。因此,基于我的多重方式,我得到了不同的最终结果。例如,我希望我的最终投影与原始X轴成20度,与原始Y轴成20度,与原始Z轴成20度。基于矩阵,给出alpha,beta,gamma值20(或其对应的弧度)不会产生预期的旋转。我错过了什么吗?是否有一个矩阵,我可以将预期的角度放在最后?

1 个答案:

答案 0 :(得分:0)

使用rotation matrix是一种简单的方法来旋转(x,y,z)点的集合。您可以使用general rotation部分中的公式计算案例的旋转矩阵。请注意,计算插入这些方程的角度值可能很棘手。可以把它想象成一次围绕一个轴旋转,并记住你的旋转顺序(乘法的顺序)很重要。

一般旋转方程的替代方法是calculate a rotation matrix from axis and angle。使用此方法定义正确的参数可能更容易。

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

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