私は自分の世界のモデルの周りを球形の動きでカメラを動かそうとしています。球面座標(rho、theta、phi)をデカルト座標(x、y、z)に変換するのを見てきましたが、これを設定する方法がわかりません。これが私がこれまでに試みたことですが、それはモデルを継続的に周回していません。ある時点に到達すると、回転が逆転しているように見えます。
初期化theta
してphi
:
private float theta = 0.0f;
private float phi = 0.0f;
更新theta
とphi
各フレーム:
// This should move the camera toward the upper-right continuously, correct?
theta = (theta+1.0f)%360;
phi = (phi+1.0f)%360;
カメラのデカルト座標に変換theta
します。phi
camera.position.x = CAMERA_DISTANCE * (float)Math.sin(theta*MathHelper.PIOVER180) * (float)Math.cos(phi*MathHelper.PIOVER180);
camera.position.y = CAMERA_DISTANCE * (float)Math.sin(theta*MathHelper.PIOVER180) * (float)Math.sin(phi*MathHelper.PIOVER180);
camera.position.z = CAMERA_DISTANCE * (float)Math.cos(theta*MathHelper.PIOVER180);
次に、カメラのポイントとビューのマトリックスを更新します。
camera.lookAt(0, 0, 0);
camera.update();
注:
AndroidでlibGDXフレームワークを使用してJavaを使用しており、2D画面上の仮想ジョイスティックを使用して回転を制御しようとしていますが、ジョイスティックをtheta
とにマップする方法を見つける必要がありphi
ます。
どんな助けでも大歓迎です!