2012-05-03 8 views
0

私は180度を通過した後、円の中に "面"を置いて一連の飛行機を配置しようとしています。私のオブジェクトはサークルの周囲に正しく配置されていますが、回転はオフです。スクリーンショットを添付しました。私のコードは以下の通りです:私の方程式に何が問題なのですか?私が間違っている可能性javascript/math - 円の周りのアイテムの不適切な回転

var circleRadius = 12; 
var diameter = circleRadius*2; 
var centerX = -5; 
var centerZ = -2.5; 

var mpi = Math.PI/180; 
var startRadians = startAngle + mpi; 
var totalSpheres = 8; 
var incrementAngle = 360/totalSpheres; 
var incrementRadians = incrementAngle * mpi; 

for (var i = 0; i < totalSpheres; i ++) { 

    var xp = centerX + Math.sin(startRadians) * circleRadius; 
    var zp = centerZ + Math.cos(startRadians) * circleRadius; 

    var camObj = new THREE.Mesh(new THREE.PlaneGeometry(1*camSize, .75*camSize), material); 

    camObj.position.x = xp; 
    camObj.position.z = zp; 
    camObj.rotation.y = i*incrementAngle; //MH - do this without degrees 
    console.log(camObj.rotation.y); 
    startRadians += incrementRadians; 

    scene.add(camObj); 

} 

alignment of objects

+0

console.logの出力は何ですか? '-i * incrementAngle'を試しましたか? – Paul

+0

ログで予測可能な数値が生成されます.45,90,135,180などです。負の値は問題を解決しませんでした。 – mheavers

答えて

2

。ライブラリを使用したことはありませんが、回転をラジアン単位で表示する必要があります。

var circleRadius = 12; 
var diameter = circleRadius*2; 
var centerX = -5; 
var centerZ = -2.5; 

var mpi = Math.PI/180; 
var startRadians = startAngle + mpi; 
var totalSpheres = 8; 
var incrementAngle = 360/totalSpheres; 
var incrementRadians = incrementAngle * mpi; 

for (var i = 0; i < totalSpheres; i ++) { 

    var xp = centerX + Math.sin(startRadians) * circleRadius; 
    var zp = centerZ + Math.cos(startRadians) * circleRadius; 

    var camObj = new THREE.Mesh(new THREE.PlaneGeometry(1*camSize, .75*camSize), material); 

    camObj.position.x = xp; 
    camObj.position.z = zp; 
    camObj.rotation.y = i*incrementAngle * (Math.PI/180.0); //MH - do this without degrees 
    console.log(camObj.rotation.y); 
    startRadians += incrementRadians; 

    scene.add(camObj); 

} 
+0

ああ!男、そのような簡単な監視。ありがとうございました。 – mheavers

関連する問題