0

私は非常に基本的な惑星の動き (太陽、立方体として表される地球の月) を作成しようとしています。

今のところ、ある立方体を別の立方体の周りに移動させることができましたが、次の質問があります... すでに動いている立方体の周りに別の立方体 (月など) を移動する最良の方法は何ですか?

簡単な操作を使用してそれらを動かしました。x 軸上の移動:

d * Math.sin(x * Math.PI / 180.0)

ここで、d は中心または投影からの距離です (この用語を正しく使用したかどうかはわかりません)。すでに回転している立方体の距離を計算し、いくつかのパラメーターを追加して「衛星」を配置することを考えましたが、その惑星を回転の中心の「基準」のようにする方法がわかりません...

4

1 に答える 1

3

これを行うには、変換の構成を作成します。中心星の周りを惑星を周回させたいとします。最初に、惑星が軌道に移動します。つまり、x 方向に移動します。

orbit_distance = translation_orbit · planet_center

続いて、中心を中心に回転します。

orbit_position = rotation_orbit · orbit_distance

または、これを1行で記述できます

orbit_position = rotation_orbit · translation_orbit · planet_center

操作の順序が重要であることが重要です。最初に回転してから平行移動することは、最初に平行移動してから回転することと同じではありません。または、数学的に言えば、幾何学的変換は可換ではありません。

3 次元空間では、すべての線形変換は、4 次元の同次座標セットの線形方程式によって記述できます。つまり、4×4 行列を使用して、あらゆる種類の線形幾何学的変換を表現できます。

太陽を周回する惑星を周回する回転する月:

R_orbit_planet · T_orbit_planet · R_orbit_moon · T_orbit_moon · R_rotation_moon
于 2012-11-18T20:23:01.273 に答える