three.js:从平面正交矢量到平面旋转矩阵

lol*_*rup 4 javascript three.js

我想设置一个平面的旋转.这需要三个数字来表示x,y和z轴的弧度旋转.

我没有这些数字,但是,我有一个矢量'myVec',它一旦旋转就应该与平面正交.

这个向量让我向前迈进了一步,但并不完全在那里:THREE.Vector3提供了一个函数"setEulerFromRotationMatrix".也许我可以使用它,如果我能弄清楚如何从myVec生成旋转矩阵:

旋转矩阵描述了一个向量如何转换为另一个向量.因此出现了一个问题:哪个向量应该是起始向量?这一个(1,1,1),还是这一个(1,0,0)?

其次,我如何实际制作矩阵?我看过http://en.wikipedia.org/wiki/Rotation_matrix,但只发现了如何从旋转矩阵转换为其他东西.它必须以某种方式逆转矩阵乘法过程.

有什么指针吗?

Wes*_*ley 5

在three.js r50中,默认平面位于原点,而它是正z方向的法线点.所以它是( 0, 0, 1 )你想要转换的矢量myVec.但你不必直接这样做.

在three.js中做你想做的最简单的方法就是这样.

var v = myPlane.position.clone();
v.add( myVec );
myPlane.lookAt( v );
Run Code Online (Sandbox Code Playgroud)

让three.js为你做数学运算.:-)

编辑:更新为three.js r.66

  • 惊人的!!我的平面从来没有比它们应该垂直的东西更垂直。 (2认同)