0

球体に 8 つの正方形があり (上から見ると: ooo)、球体が移動するときにこれらを回転させる方法を考えていましたが、z 軸を中心に回転させる方法がわかりません (私は az 軸を使用しています)。 2D プログラム)。

これまでのところ、上に移動すると正常に動作するか、右に移動すると正常に動作しますが、右に移動すると小さな正方形に変わります。

正しく説明できていない場合は申し訳ありませんが、私はまだ 14 歳です。

これまでのプロジェクト: http://scratch.mit.edu/projects/11297983 (子供向けプログラムを使用していることはわかっています)

助けてくれてありがとう!

4

1 に答える 1

1

あなたのプログラムには回転が見られません。矢印キーで球体を動かすと四角形が激しく振動しますが、この背後にある「コード」は純粋に 2D に見えます。

これらすべてを 3D に変換するには、x²+y²+z²=r² となるように 3 つの座標を使用することから始めます。これが半径 r の球上の点の条件です。r=1 を選択し、後で描画するときに拡大縮小するのが最も簡単な場合があります。次に、 3D 回転行列を見てみましょう。行列の表記は最初はややこしいかもしれませんが、座標で表現するとかなり単純です。たとえば、z 回転を取り上げます。

xnew = xold*  cos(phi)  + yold*sin(phi) + zold*0
ynew = xold*(-sin(phi)) + yold*cos(phi) + zold*0
znew = xold*  0         + yold*0        + zold*1

上記はかなり冗長です。もちろん、これらすべての*0項を完全に削除して、因子を省略し*1、実際に z をそのままにしておくこともできます。ここでのポイントは、行列の乗算は恐ろしく見えるかもしれませんが、そうではないということです。

3D 座標を取得し、回転に応じてそれらを変更する方法を理解したら、3 つの座標のうち 2 つを使用して物を描画し、シーンの正射影を作成できます。

于 2013-07-09T05:53:11.737 に答える