ルービックキューブ(3X3X6)の回転動作版
ルービックキューブ(3X3X6)の回転動作を実現するプログラムを示します。一つ
の方向からの図だけではパネルの動きが判り辛いので、 四つの方向からの図を同
時に3D描画させるようにしています(図1参照)。 見る方向はプログラム内で自由
に設定できます。以下の例では、
方向1: θ=45度、φ=45度
方向2: θ=45度、φ=135度
方向3: θ=−135度、φ=45度
方向4: θ=−135度、φ=135度
の四つの方向からです。
(図1、十進BASICによる3Dグラフィックス)
パネルを少し動かしてみましょう。Z2CROTATION→X2CROTATION→Y2C
ROTATIONという順番で回転動作させたものが図2です。 当然、全ての図でパネ
ルが連動して動いています。
(図2、十進BASICによる3Dグラフィックス)
まずは、メインプログラムから説明します。 ルービックキューブを四つの方向から見
た図を同時に3D描画させる為の部分を追加しています。 各キューブを描画させる
前に、配列のデータを初期化するINITIALIZATIONという外部副プログラムを呼
び出しています。正六面体の各頂点座標値、パネルの中心点やコーナー点の座標
値はそこで初期化しています。また、回転動作の方向と場所は、回転動作を行う外
部副プログラム名の最初の3文字で指定してください。 Z軸の+方向から見て、 時
計方向の90度回転を三段目について行いたい場合は、”Z3C”と入力します。
続いて外部副プログラムについて説明します。 以下の六つの外部副プログラムは
前ページのものと同じです。
PZROTATION、PXROTATION、PPROJECTION
SZROTATION、SXROTATION、SPROJECTION
次の二つについては、画面上で図形を移動そして縮小する為の引数を新たに三つ
追加しています。SXMとSZMは移動に関する引数で、SSは縮小に関する引数で
す。SSの値が1より大きければ、当然、拡大になります。
DRAWCUBE(STHETA,SPHI,XP(),ZP(),SXM,SZM,SS)
DRAWPANEL(STHETA,SPHI,XS(,),ZS(,),CP(),SXM,SZM,
SS)
そして、配列の初期化を行う外部副プログラムは、メインプログラム内にあったもの
を外部副プログラムへ移し替えただけです。
INITIALIZATION(XP(),YP(),ZP(),XC(),YC(),ZC(),XS(,),
YS(,),ZS(,))
最後に、パネルの回転動作を行う外部副プログラムを示します。他の外部副プログ
ラムも同様に記述できます。 回転動作するパネルの色情報を単純に入れ替えてい
ます。
Z1CROTATION(CP())
Z1AROTATION(CP())
課題(その1)
パネルの回転動作に関するコマンドをファイルから複数個読み込んで、 パネルの3
D図を描画させるプログラムを作成してください。
課題(その2)
パネルの3D図からパネルの回転動作の手順を割り出すプログラムを作成してくだ
さい。例えば、Z2A→X2A→Y2A→Z3C→X3C→Y3Cという順でパネルを回転
動作させると、 図3のようなパネル配置になります。 この手順を逆にトレースするこ
とは可能ですか。
(図3、十進BASICによる3Dグラフィックス)