0

一連の平面を円形に配置して、中心に「面して」配置しようとしていますが、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 );

}

オブジェクトの整列

4

1 に答える 1

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

}
于 2012-05-03T17:32:08.580 に答える