2012-05-03 4 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

log производит прогнозируемые числа - 45, 90, 135, 180 и т. Д. Отрицательно я не исправил проблему. – mheavers

ответ

2

Я мог бы неправильно. Никогда не использовал библиотеку, но, глядя на нее в github, похоже, что вращение должно быть в радианах не градусов.

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