我目前正在寻找一种方法让物体在矢量坐标 0,0,0 上运行。例如,如果对象位于 X300,Y50,Z200,我希望它围绕 0,0,0 旋转,但我不想调整 Y 轴。我对数学不是很好,事实证明这很难掌握。
问问题
1722 次
2 回答
2
使用以下代码允许对象以圆形模式移动。
function orbitRight() {
var x = thisObj.position.x;
var z = thisObj.position.z;
thisObj.position.x = x * Math.cos(.02) - z * Math.sin(.02);
thisObj.position.z = z * Math.cos(.02) + x * Math.sin(.02);
}
于 2013-10-07T23:36:03.120 回答
1
那么轨道意味着你有一个轴。(0, 0, 0) 只是 3D 空间中的一个点,因此您需要另一个点 ( -3, 8, 4 ) 来创建归一化轴。如果您使用 Three.js Object3D
,您可以简单地规范化该objects.up
属性。但我跑题了,这是一个简单的向量示例:
var startPoint = new THREE.Vector3( 0, 0, 0 );
var axisVector = new THREE.Vector3( -3, 8, 4);
var endPoint = new THREE.Vector3( 300, 50, 200 );
var rotation = 0.05;
var axis = startPoint.clone().sub(axisVector).normalize();
endPoint.applyAxisAngle( axis, rotation );
这Vector3
是一个使用两个立方体而不是 bare的小提琴希望有帮助!
于 2013-10-07T20:36:36.653 回答