我目前正在寻找一种让物体绕轨道矢量坐标0,0,0的方法。 例如,如果物体位于X300,Y50,Z200,我希望它围绕0,0,0旋转,但我不想调整Y轴。我对数学并不擅长,而且事实证明这很难掌握。
答案 0 :(得分: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);
}
答案 1 :(得分: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
的{{3}}希望有帮助!