0

この例では、回転と変換の使用について混乱しています。具体的には、

// The earth rotates around the sun
  pushMatrix();
  rotate(theta);
  translate(50,0);
  fill(50,200,255);
  ellipse(0,0,10,10); 

何がrotate(theta);回転しますか?回転と平行移動の関係は何ですか?

4

1 に答える 1

1

回転と平行移動は、現在の座標系に作用しています。

つまり、描画アクション(rect()、ellipse()など)は、現在の座標系内で適用されます。ここで、rotate&translateは座標系を移動します。

指定したコードのブロックの前に、太陽を描画するために現在のポイントがウィンドウの中心に変換されました。

pushMatrix()はその位置を保存し、太陽の中心を基準にして、「すべて」(座標系)がシータによって回転し、「すべて」が(50,0)によって変換され、「現在のポイント」を正しい位置に効果的に移動します次に、ellipse(0,0,10,10)を使用して地球を描画します。

次のコードブロックが月の位置を正しく取得するためにその変換に依存しているという事実がなければ、おそらく変換ステップを省略し、ellipse(50,0,10,10)を使用して同じ視覚的な結果を得ることができることに注意してください。

これを「グラフ用紙の移動」の観点から説明する興味深いリンクがあります

于 2012-12-30T22:20:50.577 に答える