对象围绕矢量点旋转

时间:2013-10-07 19:46:35

标签: javascript 3d three.js

我目前正在寻找一种让物体绕轨道矢量坐标0,0,0的方法。 例如,如果物体位于X300,Y50,Z200,我希望它围绕0,0,0旋转,但我不想调整Y轴。我对数学并不擅长,而且事实证明这很难掌握。

2 个答案:

答案 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}}希望有帮助!