0

私はOpenGLSuperbible(4th Edition)を使用しています。第4章には、原子核を中心に電子を回転させる例があります。(基本的に、単一の大きな球の周りの小さな球)。

これは、原子核(別の球)の周りの特定の位置に電子(球)を描画するレンダリング関数の抜粋です。fElect1レンダリングを呼び出すたびに10度ずつ増加する角度です。

glPushMatrix();
glRotatef(360.0f-45.0f,0.0f, 0.0f, 1.0f);
glRotatef(fElect1, 0.0f, 1.0f, 0.0f);
glTranslatef(0.0f, 0.0f, 60.0f);
glColor3ub(56,136,21);
glutSolidSphere(6.0f, 15, 15);
glPopMatrix()

つまり、彼はビューをz軸を中心に315度回転させます。次に、新しく回転したy軸を中心にビューを角度だけ回転させてからfElect1、球を描画します。つまり、彼はy軸の周りの電子の軌道をシミュレートしたいと考えています。その結果、電子は球の周りを「傾いた」軌道で移動しているように見えます(x軸が315度傾いているために傾いています)。

しかし、私の質問は、なぜ彼はz軸で平行移動するのですか?これは、電子がその経路の中心に核がないような軌道を持っていることを意味するのではないでしょうか?しかし、シミュレーションを実行すると、そのようには見えません。

4

1 に答える 1

1

おそらくあなたは間違った方向からの操作を考えていると思います。それらはGLで適用される方法であり、最初に最も「グローバル」な変換を適用し、最後に最も「ローカル」な変換を適用します。したがって、何かがどのように変換されるかを考えるときは、逆の順序で考えることをお勧めします。

それで:

  • あなたの球は原点で生成されます
  • これは、Zで60単位に変換されます。
  • 次に、Y軸を中心に回転します(したがって、XZ平面の原点を60単位の距離で周回しています)。
  • 最後に、すべてがZ軸を中心に回転し、傾斜が生じます。
  • これは、「アトム」にすでに適用されている変換やカメラなど、以前の変換によってさらに変換されます。
于 2013-03-16T11:31:56.997 に答える