javascript/math: rotación incorrecta de elementos alrededor de un círculo
Frecuentes
Visto 935 veces
0
Estoy tratando de organizar una serie de planos en un círculo, "mirando" hacia el centro, pero obtengo algunos resultados extraños después de pasar los 180 grados. Mis objetos están distribuidos correctamente alrededor del círculo, pero la rotación está desactivada. Adjunté una captura de pantalla y mi código está debajo: ¿qué pasa con mi ecuación?
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 );
}
1 Respuestas
2
Podría estar equivocado. Nunca usé la biblioteca, pero al mirarla en github parece que la rotación debería estar en radianes, no en grados.
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 );
}
contestado el 03 de mayo de 12 a las 18:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript math geometry three.js or haz tu propia pregunta.
¿Cuál es el resultado de su console.log? Has probado
-i*incrementAngle
? - Paullog produce números predecibles: 45, 90, 135, 180, etc. Negativo, no solucioné el problema. - mheavers