【问题标题】:three.js rotate object by an axe directionthree.js 按轴方向旋转对象
【发布时间】:2015-02-06 04:07:14
【问题描述】:

我想在由两点 p1 和 p2 组成的某个轴上旋转圆柱体。 我创建高度 l 等于两点之间距离的圆柱体,我将它放在该轴的中间。

var xd = p2.x - p1.x,
yd = p2.y - p1.y,
zd = p2.z - p1.z,
l = Math.sqrt(xd*xd + yd*yd + zd*zd);
var cylinder = new THREE.Mesh( new THREE.CylinderGeometry( 5, 5, l, 32 ), new THREE.MeshBasicMaterial( {color: "#ffffff"} ) );
cylinder.position.set(p1.x+xd/2, p1.y+yd/2, p1.z+zd/2);

我使用 setFromUnitVectors 获取两点之间所需的旋转矩阵,并将其应用于圆柱体的旋转矩阵

var quaternion = new THREE.Quaternion();
quaternion.setFromUnitVectors(new THREE.Vector3(p1.x,p1.y,p1.z).normalize(),new THREE.Vector3(p2.x,p2.y,p2.z).normalize());
cylinder.rotation.setFromQuaternion(quaternion);

我看不出有什么问题,或者也许有其他方法可以做到这一点?

【问题讨论】:

    标签: vector rotation three.js quaternions


    【解决方案1】:

    另一种方法是,如果 p2 是向量,则只制作圆柱体LookAt(p2)

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 2015-01-06
      • 2014-10-24
      • 1970-01-01
      • 2012-06-19
      • 2020-09-29
      • 1970-01-01
      • 2012-06-22
      • 2015-12-27
      相关资源
      最近更新 更多