我试图将一系列平面排列成一个圆圈,“面向”中心,但在经过 180 度后,我得到了一些奇怪的结果。我的对象正确分布在圆圈周围,但旋转关闭。我已附上屏幕截图,我的代码如下:我的方程有什么问题?
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 );
}
最佳答案
我可能是错的。从未使用过该库,但在 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 );
}
关于javascript/math - 项目围绕圆圈旋转不当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436132/