2013-10-07 19 views
0

我目前正在尋找一種方法來使矢量座標爲0,0,0的物體軌道。 例如,如果對象位於X300,Y50,Z200比我想它圍繞0,0,0旋轉,但我不想調整Y軸。數學並不好,這被證明是非常難以掌握的。有沒有物體繞矢量點

回答

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); 

下面是使用兩個立方體,而不是裸Vector3here希望幫助提琴!

+0

感謝您的幫助。這使我能夠在一個新的光明中看到問題。我還找到了一種替代解決方案。我會在下面分享它。 – Kahless

+0

很高興能夠提供幫助,有趣的是'Vector3'有一個基於原點(0,0,0)的長度(有時稱爲幅度),它基本上是一個畢達哥拉斯式的量級。這就是爲什麼原點上的Vector3不能用於旋轉軸的原因。 –

1

使用以下代碼允許對象以圓形模式移動。

 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); 
     }