コメントに投稿したコードによると、X、Y、Z の値を生成する方法は次のとおりです。
theta = 2 * PI * U;
phi = PI * V;
_x = Math.cos(theta) * Math.sin(phi) * radius;
_y = Math.sin(theta) * Math.sin(phi) * radius;
_z = -Math.cos(phi) * radius;
古い答え:
あなたのコードは問題ありません。球が同じ方法で生成され、極がそのように Z 軸に沿っていることは確かですか? 「通常」球体は、極が Y 軸に沿って生成されます。これをチェックして。
それ以外の場合、常に +/- 90° ずれている場合は、x と y を定義する sin と cos をいじってみてください。例えば:
_x = -Math.sin(_u) * Math.sin(_v) * radius;
_y = Math.cos(_u) * Math.sin(_v) * radius;
オリジナルの90°回転です。
これら 2 つのコンポーネントのサイン/コサインをさまざまな符号で実行できる 8 つの異なる方法があります。球体がどのように生成されるかを知らなければ、それらをすべて試してみる必要があります。彼らが行く
(x = sin(u), y = cos(u));
(x = sin(u), y = -cos(u));
(x = -sin(u), y = cos(u));
(x = -sin(u), y = -cos(u));
(x = cos(u), y = sin(u));
(x = cos(u), y = -sin(u));
(x = -cos(u), y = sin(u));
(x = -cos(u), y = -sin(u));
ただし、これは面倒でハックです。球体がどのように生成されるかを調べてみることを強くお勧めします。通常、U と V をループして x、y、z 位置を生成します。