2 点間の球に円弧を描くのに苦労します。私のアプローチは次のとおりです。
- P1 と P2 の間に、球の半径を 0 とする角度の円弧を描きます。
- X軸を中心に回転
- Z軸を中心に回転
- Y軸を中心に回転
私の機能は次のとおりです。
// compute angle between p1 and p2
var angle = Math.acos(p1.dot(p2)/(p1.length()*p2.length()));
// create arc
var geometry = new THREE.CircleGeometry(earthRadius, earthBands, 0, angle);
// remove center vertex
geometry.vertices.splice(0,1);
// rotate around x axis
geometry.applyMatrix(new THREE.Matrix4().makeRotationX(Math.atan((p2.z-p1.z) / (p2.y-p1.y))));
// rotate around z axis
geometry.applyMatrix(new THREE.Matrix4().makeRotationZ(-Math.atan(p1.y / p1.x)));
// rotate around y axis
geometry.applyMatrix(new THREE.Matrix4().makeRotationY(Math.atan(p1.z / p1.y)));
球体に弧を描くのは良い方法ですか? 円弧が正しく回転しないのはなぜですか?