2

太陽系の3Dシミュレーションをしています

すべての惑星について、私はクラスCelestialBodyのインスタンスを持っています。私は、太陽、惑星、およびそれらの衛星の回転と回転に次のコードを使用しています。

world = Matrix.CreateTranslation(0,0,0) * Matrix.CreateRotationY(rotation) * Matrix.CreateTranslation(position) * Matrix.CreateRotationY(revolution); 
  • 回転は、惑星を自身の軸を中心に回転させるためのフロート変数です。
  • 回転は、軌道上の惑星の回転のための私のフロート変数です
  • 位置は、私のvector3変数に対して、体を軌道上または中心からの半径に配置します。postion = new Vector3(70,0,0)

今では本当にうまくいきます。

しかし、問題は、行列の乗算後に文字通りx、y、x座標で変換された惑星の位置を特定する必要があることです。

方法 ?私の惑星の現在のX、Y、Z座標を取得します

私にとってのもう1つのオプションは、2D円を計算する数式を使用することです。

4

1 に答える 1

5

あなたが探しているのはですMatrix.Translation。これにより、で呼び出されるマトリックスのx、y、zコオディネートが得られますVector3

したがって、新しい位置を取得するには、を使用する必要があります

Vector3 newPosition = world.Translation;

あなたの計算の後。

于 2011-05-23T17:51:12.393 に答える