我想旋转一个矢量,以绿色显示,使其朝向另一个矢量(也是绿色),进入红色虚线所示的位置。您可以将矢量视为位于圆形或圆盘上的旋转。我已经有旋转轴(蓝色)。找到旋转圆的角度需要哪些步骤?
此外,这种关系有没有名称?我不希望矢量完全“平行”,只是为了让它们在直视旋转轴时看起来排成一行。您可能会发现这在3D图形中称为“向上”向量,当“向上”向量始终为Y轴时,事情很简单。我想找到任意两个任意向量的广义解。
PS。我试图在three.js中做到这一点。
答案 0 :(得分:1)
观察
使用点积我们可以在S上投影向上矢量,以获得与红线平行的S上的向量V.然后我们可以计算V和绿线之间的角度。在three.js中,可以这样实现:
// compute projection v
var n = axis.clone().normalize(); // normal of S plane
var d = up.dot(n); // distance from up vector to S plane
var v = up.clone().sub(n.multiplyScalar(d)); // maybe -d
// compute angle
var angle = green.angleTo(v);
d或-d取决于轴的方向。请注意,如果向上矢量和轴是平行的,则不起作用。