我正在使用apache数学库。我想应用一个旋转(到矢量),这个旋转与我手头的旋转成比例。像
这样的东西Rotation rotation2 = number * rotation1;
return rotation2.applyTo(vector);
其中number是旋转角度的乘数,number == 1会导致rotation2等于rotation1,而number == 0会导致旋转(旋转角度== 0)
我该怎么做?
答案 0 :(得分:2)
就像他的评论中提出的rashmatash一样,你应该
Rotation
到getQ0
从getQ3
中提取四元数组件。getAngle
获取旋转角度。Rotation
。像这样(未经测试):
double angle = rotation1.getAngle();
double sinAngle = Math.sin(angle);
double factor = Math.sin(number * angle) / sinAngle;
double factor2 = Math.sin((1 - number) * angle) / sinAngle;
double q0 = factor * rotation1.getQ0() + factor2;
double q1 = factor * rotation1.getQ1();
double q2 = factor * rotation1.getQ2();
double q3 = factor * rotation1.getQ3();
Rotation rotation2 = new Rotation(q0, q1, q2, q3, false);
答案 1 :(得分:2)
您可以使用getAxis()和getAngle()进行旋转,然后使用相同的轴和修改的角度构建另一个旋转。这比使用四元数更容易。