■ / inTopicNo.1) |
3Dルービックキューブ
|
□投稿者/ 一本ネギ さん ( ) 【125.55.122.189】(2008/02/19(Tue) 15:38:01)
 |
#------------------------------------------- #【ソフト名】 ルービックキューブ(β版) #【作 者】 一本ネギ #【連 絡 先】 alliumfistulosum@hotmail.co.jp #【U R L 】 無し #【投 稿 日】 2008/2/19 #【ジャンル】 ゲーム #【なでしこバージョン】 ver.1.5 #【なでしこの実行方法】 標準GUI(vnako.exe) #【転 載】 全て許可(連絡いただけると嬉しいです) #【利用するファイル】 User32.dll(マウス座標監視用) #【コメント】 普通のルービックキューブです。 #マウス右ボタンでキューブ全体の回転。 #マウス左ボタンでキューブの各部分の回転。 #テンキーの0でスクランブル。 #コードに無駄が多く、非常に汚いのは仕様です(笑)。 #16Bitカラー以上の環境でないと動作しません。 #また、β版ということで、バグ等が残っているかもしれないので、発見された方はレスかメールをいただけると助かります。 #2/19 4:10 公開 #2/19 15:30 細部修正 #2/24 開発中に原因不明のバグが発生することが判明したため開発中止。 #------------------------------------------ ●GetCursorPos({参照渡し}p) =DLL("User32.dll","BOOL GetCursorPos(lpPoint);") ■POINT ・X ・Y ●マウス座標取得 tempとは変数 Aとは変数 PACK(POINT,temp,"long,long") GetCursorPos(POINTER(temp)) UNPACK(temp,POINT,"long,long") POINTのXをAに追加 「,」をAに追加 POINTのYをAに追加 SMX=POINTのX-母艦のX-4-原点X SMY=-POINTのY+母艦のY+23+原点Y RSMX=POINTのX-母艦のX-4 RSMY=POINTのY-母艦のY-23 ●頂点算出 I@X=(A@X+C@X)/2 I@Y=(A@Y+C@Y)/2 I@Z=(A@Z+C@Z)/2 IC@X=C@X-I@X IC@Y=C@Y-I@Y IC@Z=C@Z-I@Z 法線(IC,I,20000^0.5) B@X=I@X+RV@X B@Y=I@Y+RV@Y B@Z=I@Z+RV@Z D@X=A@X+C@X-B@X D@Y=A@Y+C@Y-B@Y D@Z=A@Z+C@Z-B@Z E@X=A@X-2*I@X E@Y=A@Y-2*I@Y E@Z=A@Z-2*I@Z F@X=B@X-2*I@X F@Y=B@Y-2*I@Y F@Z=B@Z-2*I@Z G@X=C@X-2*I@X G@Y=C@Y-2*I@Y G@Z=C@Z-2*I@Z H@X=D@X-2*I@X H@Y=D@Y-2*I@Y H@Z=D@Z-2*I@Z ●POLYT(A,B,C,D,対象) POLYA=ROUND(A@X/((A@Z+原点Z)*DeltaZ))+原点X POLYB=ROUND(-A@Y/((A@Z+原点Z)*DeltaZ))+原点Y POLYC=ROUND(B@X/((B@Z+原点Z)*DeltaZ))+原点X POLYD=ROUND(-B@Y/((B@Z+原点Z)*DeltaZ))+原点Y POLYE=ROUND(C@X/((C@Z+原点Z)*DeltaZ))+原点X POLYF=ROUND(-C@Y/((C@Z+原点Z)*DeltaZ))+原点Y POLYG=ROUND(D@X/((D@Z+原点Z)*DeltaZ))+原点X POLYH=ROUND(-D@Y/((D@Z+原点Z)*DeltaZ))+原点Y もし対象=「画面B」ならば POLY(画面B,「{POLYA},{POLYB},{POLYC},{POLYD},{POLYE},{POLYF},{POLYG},{POLYH}」) もし対象=「画面C」ならば POLY(画面C,「{POLYA},{POLYB},{POLYC},{POLYD},{POLYE},{POLYF},{POLYG},{POLYH}」) ●法線(A,B,C) RV@X=A@Y*B@Z-A@Z*B@Y RV@Y=A@Z*B@X-A@X*B@Z RV@Z=A@X*B@Y-A@Y*B@X DRV=(RV@X^2+RV@Y^2+RV@Z^2)^0.5 RV@X=RV@X*C/DRV RV@Y=RV@Y*C/DRV RV@Z=RV@Z*C/DRV ●外積(A,B) RV@X=A@Y*B@Z-A@Z*B@Y RV@Y=A@Z*B@X-A@X*B@Z RV@Z=A@X*B@Y-A@Y*B@X ●回転(AXIS,CO) AXISL=(AXIS@X^2+AXIS@Y^2+AXIS@Z^2)^0.5 AXIS@X=AXIS@X/AXISL AXIS@Y=AXIS@Y/AXISL AXIS@Z=AXIS@Z/AXISL SI=(1-CO^2)^0.5 A@X=A@X*(CO+AXIS@X^2*(1-CO))+A@Y*(AXIS@X*AXIS@Y*(1-CO)-AXIS@Z*SI)+A@Z*(AXIS@X*AXIS@Z*(1-CO)+AXIS@Y*SI) C@X=C@X*(CO+AXIS@X^2*(1-CO))+C@Y*(AXIS@X*AXIS@Y*(1-CO)-AXIS@Z*SI)+C@Z*(AXIS@X*AXIS@Z*(1-CO)+AXIS@Y*SI) A@Y=A@X*(AXIS@X*AXIS@Y*(1-CO)+AXIS@Z*SI)+A@Y*(CO+AXIS@Y^2*(1-CO))+A@Z*(AXIS@Y*AXIS@Z*(1-CO)-AXIS@X*SI) C@Y=C@X*(AXIS@X*AXIS@Y*(1-CO)+AXIS@Z*SI)+C@Y*(CO+AXIS@Y^2*(1-CO))+C@Z*(AXIS@Y*AXIS@Z*(1-CO)-AXIS@X*SI) A@Z=A@X*(AXIS@X*AXIS@Z*(1-CO)-AXIS@Y*SI)+A@Y*(AXIS@Y*AXIS@Z*(1-CO)+AXIS@X*SI)+A@Z*(CO+AXIS@Z^2*(1-CO)) C@Z=C@X*(AXIS@X*AXIS@Z*(1-CO)-AXIS@Y*SI)+C@Y*(AXIS@Y*AXIS@Z*(1-CO)+AXIS@X*SI)+C@Z*(CO+AXIS@Z^2*(1-CO)) ●頂点補正 ACL=((C@X-A@X)^2+(C@Y-A@Y)^2+(C@Z-A@Z)^2)^0.5 COK=(A@X^2+A@Y^2+A@Z^2+ACL^2-C@X^2-C@Y^2-C@Z^2)/(2*ACL*(A@X^2+A@Y^2+A@Z^2)^0.5) COL=COK+2*(2-2*COK^2)^0.5 AEL=(8*(A@X^2+A@Y^2+A@Z^2)^0.5)/(9*COK-COL) C@X=A@X+(C@X-A@X)*AEL/ACL C@Y=A@Y+(C@Y-A@Y)*AEL/ACL C@Z=A@Z+(C@Z-A@Z)*AEL/ACL OAL=(A@X^2+A@Y^2+A@Z^2)^0.5 OCL=(C@X^2+C@Y^2+C@Z^2)^0.5 TN=30000^0.5 C@X=C@X*TN/OCL C@Y=C@Y*TN/OCL C@Z=C@Z*TN/OCL A@X=A@X*TN/OAL A@Y=A@Y*TN/OAL A@Z=A@Z*TN/OAL ●面描画 母艦を黒色で画面クリア 画面Bを$007800で画面クリア 線色=黒色 もし(A@Z+C@Z)<-25ならば 面描画F(A,B,C,D,1,0,「画面B」) もし(A@Z+F@Z)<-25ならば 面描画F(A,B,F,E,2,0,「画面B」) もし(C@Z+F@Z)<-25ならば 面描画F(B,C,G,F,3,0,「画面B」) もし(C@Z+H@Z)<-25ならば 面描画F(C,D,H,G,4,0,「画面B」) もし(D@Z+E@Z)<-25ならば 面描画F(D,A,E,H,5,0,「画面B」) もし(E@Z+G@Z)<-25ならば 面描画F(E,F,G,H,6,0,「画面B」) 画面Bを母艦の0,0へ画像コピー ●面描画C 画面Cを白色で画面クリア 線色=白色 もし(A@Z+C@Z)<-25ならば 面描画F(A,B,C,D,11,0,「画面C」) もし(A@Z+F@Z)<-25ならば 面描画F(A,B,F,E,12,0,「画面C」) もし(C@Z+F@Z)<-25ならば 面描画F(B,C,G,F,13,0,「画面C」) もし(C@Z+H@Z)<-25ならば 面描画F(C,D,H,G,14,0,「画面C」) もし(D@Z+E@Z)<-25ならば 面描画F(D,A,E,H,15,0,「画面C」) もし(E@Z+G@Z)<-25ならば 面描画F(E,F,G,H,16,0,「画面C」) ●面描画F(A,B,C,D,N,E,対象) 塗り色=面[N,1] もしE=0||E=1||E=2||E=9||E=10ならば TVEF@X=(A@X+2*D@X)/3 TVEF@Y=(A@Y+2*D@Y)/3 TVEF@Z=(A@Z+2*D@Z)/3 TVES@X=(B@X+2*D@X)/3 TVES@Y=(B@Y+2*D@Y)/3 TVES@Z=(B@Z+2*D@Z)/3 TVET@X=(C@X+2*D@X)/3 TVET@Y=(C@Y+2*D@Y)/3 TVET@Z=(C@Z+2*D@Z)/3 POLYT(D,TVEF,TVES,TVET,対象) 塗り色=面[N,2] もしE=0||E=1||E=2||E=6||E=8||E=10ならば TVEF@X=(A@X+2*C@X)/3 TVEF@Y=(A@Y+2*C@Y)/3 TVEF@Z=(A@Z+2*C@Z)/3 TVES@X=(B@X+2*D@X)/3 TVES@Y=(B@Y+2*D@Y)/3 TVES@Z=(B@Z+2*D@Z)/3 TVET@X=(C@X+2*D@X)/3 TVET@Y=(C@Y+2*D@Y)/3 TVET@Z=(C@Z+2*D@Z)/3 TVEO@X=(D@X+2*C@X)/3 TVEO@Y=(D@Y+2*C@Y)/3 TVEO@Z=(D@Z+2*C@Z)/3 POLYT(TVEF,TVES,TVET,TVEO,対象) 塗り色=面[N,3] もしE=0||E=1||E=2||E=6||E=7ならば TVEF@X=(A@X+2*C@X)/3 TVEF@Y=(A@Y+2*C@Y)/3 TVEF@Z=(A@Z+2*C@Z)/3 TVES@X=(B@X+2*C@X)/3 TVES@Y=(B@Y+2*C@Y)/3 TVES@Z=(B@Z+2*C@Z)/3 TVEO@X=(D@X+2*C@X)/3 TVEO@Y=(D@Y+2*C@Y)/3 TVEO@Z=(D@Z+2*C@Z)/3 POLYT(C,TVEO,TVEF,TVES,対象) 塗り色=面[N,4] もしE=0||E=1||E=3||E=5||E=9||E=10ならば TVEF@X=(D@X+2*A@X)/3 TVEF@Y=(D@Y+2*A@Y)/3 TVEF@Z=(D@Z+2*A@Z)/3 TVES@X=(B@X+2*D@X)/3 TVES@Y=(B@Y+2*D@Y)/3 TVES@Z=(B@Z+2*D@Z)/3 TVET@X=(A@X+2*D@X)/3 TVET@Y=(A@Y+2*D@Y)/3 TVET@Z=(A@Z+2*D@Z)/3 TVEO@X=(C@X+2*A@X)/3 TVEO@Y=(C@Y+2*A@Y)/3 TVEO@Z=(C@Z+2*A@Z)/3 POLYT(TVEF,TVET,TVES,TVEO,対象) 塗り色=面[N,5] もし(E=0||E=1||E=3||E=5||E=6||E=8||E=10)ならば TVEF@X=(A@X+2*C@X)/3 TVEF@Y=(A@Y+2*C@Y)/3 TVEF@Z=(A@Z+2*C@Z)/3 TVES@X=(B@X+2*D@X)/3 TVES@Y=(B@Y+2*D@Y)/3 TVES@Z=(B@Z+2*D@Z)/3 TVET@X=(D@X+2*B@X)/3 TVET@Y=(D@Y+2*B@Y)/3 TVET@Z=(D@Z+2*B@Z)/3 TVEO@X=(C@X+2*A@X)/3 TVEO@Y=(C@Y+2*A@Y)/3 TVEO@Z=(C@Z+2*A@Z)/3 POLYT(TVEO,TVES,TVEF,TVET,対象) 塗り色=面[N,6] もしE=0||E=1||E=3||E=5||E=6||E=7ならば TVEF@X=(A@X+2*C@X)/3 TVEF@Y=(A@Y+2*C@Y)/3 TVEF@Z=(A@Z+2*C@Z)/3 TVES@X=(B@X+2*C@X)/3 TVES@Y=(B@Y+2*C@Y)/3 TVES@Z=(B@Z+2*C@Z)/3 TVET@X=(D@X+2*B@X)/3 TVET@Y=(D@Y+2*B@Y)/3 TVET@Z=(D@Z+2*B@Z)/3 TVEO@X=(C@X+2*B@X)/3 TVEO@Y=(C@Y+2*B@Y)/3 TVEO@Z=(C@Z+2*B@Z)/3 POLYT(TVEF,TVES,TVEO,TVET,対象) 塗り色=面[N,7] もしE=0||E=4||E=5||E=9||E=10ならば TVEF@X=(D@X+2*A@X)/3 TVEF@Y=(D@Y+2*A@Y)/3 TVEF@Z=(D@Z+2*A@Z)/3 TVES@X=(B@X+2*A@X)/3 TVES@Y=(B@Y+2*A@Y)/3 TVES@Z=(B@Z+2*A@Z)/3 TVEO@X=(C@X+2*A@X)/3 TVEO@Y=(C@Y+2*A@Y)/3 TVEO@Z=(C@Z+2*A@Z)/3 POLYT(A,TVEF,TVEO,TVES,対象) 塗り色=面[N,8] もしE=0||E=4||E=5||E=6||E=8||E=10ならば TVEF@X=(A@X+2*B@X)/3 TVEF@Y=(A@Y+2*B@Y)/3 TVEF@Z=(A@Z+2*B@Z)/3 TVES@X=(B@X+2*A@X)/3 TVES@Y=(B@Y+2*A@Y)/3 TVES@Z=(B@Z+2*A@Z)/3 TVET@X=(D@X+2*B@X)/3 TVET@Y=(D@Y+2*B@Y)/3 TVET@Z=(D@Z+2*B@Z)/3 TVEO@X=(C@X+2*A@X)/3 TVEO@Y=(C@Y+2*A@Y)/3 TVEO@Z=(C@Z+2*A@Z)/3 POLYT(TVEF,TVES,TVEO,TVET,対象) 塗り色=面[N,9] もしE=0||E=4||E=5||E=6||E=7ならば TVEF@X=(A@X+2*B@X)/3 TVEF@Y=(A@Y+2*B@Y)/3 TVEF@Z=(A@Z+2*B@Z)/3 TVET@X=(D@X+2*B@X)/3 TVET@Y=(D@Y+2*B@Y)/3 TVET@Z=(D@Z+2*B@Z)/3 TVEO@X=(C@X+2*B@X)/3 TVEO@Y=(C@Y+2*B@Y)/3 TVEO@Z=(C@Z+2*B@Z)/3 POLYT(B,TVEF,TVET,TVEO,対象) ●配列回転処理(N) もしN=1ならば 面[1,11]=面[1,1] 面[1,12]=面[1,2] 面[1,1]=面[1,3] 面[1,2]=面[1,6] 面[1,3]=面[1,9] 面[1,6]=面[1,8] 面[1,9]=面[1,7] 面[1,8]=面[1,4] 面[1,7]=面[1,11] 面[1,4]=面[1,12] 面[2,19]=面[2,9] 面[2,18]=面[2,8] 面[2,17]=面[2,7] 面[2,9]=面[5,9] 面[2,8]=面[5,8] 面[2,7]=面[5,7] 面[5,9]=面[4,9] 面[5,8]=面[4,8] 面[5,7]=面[4,7] 面[4,9]=面[3,9] 面[4,8]=面[3,8] 面[4,7]=面[3,7] 面[3,9]=面[2,19] 面[3,8]=面[2,18] 面[3,7]=面[2,17] もしN=2ならば 面[2,14]=面[2,4] 面[2,15]=面[2,5] 面[2,16]=面[2,6] 面[2,4]=面[5,4] 面[2,5]=面[5,5] 面[2,6]=面[5,6] 面[5,4]=面[4,4] 面[5,5]=面[4,5] 面[5,6]=面[4,6] 面[4,4]=面[3,4] 面[4,5]=面[3,5] 面[4,6]=面[3,6] 面[3,4]=面[2,14] 面[3,5]=面[2,15] 面[3,6]=面[2,16] もしN=3ならば 面[6,11]=面[6,1] 面[6,12]=面[6,2] 面[6,1]=面[6,3] 面[6,2]=面[6,6] 面[6,3]=面[6,9] 面[6,6]=面[6,8] 面[6,9]=面[6,7] 面[6,8]=面[6,4] 面[6,7]=面[6,11] 面[6,4]=面[6,12] 面[2,11]=面[2,1] 面[2,12]=面[2,2] 面[2,13]=面[2,3] 面[2,1]=面[5,1] 面[2,2]=面[5,2] 面[2,3]=面[5,3] 面[5,1]=面[4,1] 面[5,2]=面[4,2] 面[5,3]=面[4,3] 面[4,1]=面[3,1] 面[4,2]=面[3,2] 面[4,3]=面[3,3] 面[3,1]=面[2,11] 面[3,2]=面[2,12] 面[3,3]=面[2,13] もしN=4ならば 面[3,11]=面[3,1] 面[3,14]=面[3,4] 面[3,1]=面[3,7] 面[3,4]=面[3,8] 面[3,7]=面[3,9] 面[3,8]=面[3,6] 面[3,9]=面[3,3] 面[3,6]=面[3,2] 面[3,3]=面[3,11] 面[3,2]=面[3,14] 面[2,13]=面[2,3] 面[2,16]=面[2,6] 面[2,19]=面[2,9] 面[2,3]=面[1,9] 面[2,6]=面[1,6] 面[2,9]=面[1,3] 面[1,9]=面[4,7] 面[1,6]=面[4,4] 面[1,3]=面[4,1] 面[4,7]=面[6,3] 面[4,4]=面[6,6] 面[4,1]=面[6,9] 面[6,3]=面[2,13] 面[6,6]=面[2,16] 面[6,9]=面[2,19] もしN=5ならば 面[2,12]=面[2,2] 面[2,15]=面[2,5] 面[2,18]=面[2,8] 面[2,2]=面[1,8] 面[2,5]=面[1,5] 面[2,8]=面[1,2] 面[1,8]=面[4,8] 面[1,5]=面[4,5] 面[1,2]=面[4,2] 面[4,8]=面[6,2] 面[4,5]=面[6,5] 面[4,2]=面[6,8] 面[6,2]=面[2,12] 面[6,5]=面[2,15] 面[6,8]=面[2,18] もしN=6ならば 面[5,11]=面[5,1] 面[5,12]=面[5,2] 面[5,1]=面[5,3] 面[5,2]=面[5,6] 面[5,3]=面[5,9] 面[5,6]=面[5,8] 面[5,9]=面[5,7] 面[5,8]=面[5,4] 面[5,7]=面[5,11] 面[5,4]=面[5,12] 面[2,11]=面[2,1] 面[2,14]=面[2,4] 面[2,17]=面[2,7] 面[2,1]=面[1,7] 面[2,4]=面[1,4] 面[2,7]=面[1,1] 面[1,7]=面[4,9] 面[1,4]=面[4,6] 面[1,1]=面[4,3] 面[4,9]=面[6,1] 面[4,6]=面[6,4] 面[4,3]=面[6,7] 面[6,1]=面[2,11] 面[6,4]=面[2,14] 面[6,7]=面[2,17] もしN=7ならば 面[2,12]=面[2,2] 面[2,13]=面[2,3] 面[2,3]=面[2,1] 面[2,2]=面[2,4] 面[2,1]=面[2,7] 面[2,4]=面[2,8] 面[2,7]=面[2,9] 面[2,8]=面[2,6] 面[2,9]=面[2,13] 面[2,6]=面[2,12] 面[6,17]=面[6,7] 面[6,18]=面[6,8] 面[6,19]=面[6,9] 面[6,7]=面[5,9] 面[6,8]=面[5,6] 面[6,9]=面[5,3] 面[5,9]=面[1,9] 面[5,6]=面[1,8] 面[5,3]=面[1,7] 面[1,9]=面[3,1] 面[1,8]=面[3,4] 面[1,7]=面[3,7] 面[3,1]=面[6,17] 面[3,4]=面[6,18] 面[3,7]=面[6,19] もしN=8ならば 面[6,14]=面[6,4] 面[6,15]=面[6,5] 面[6,16]=面[6,6] 面[6,4]=面[5,8] 面[6,5]=面[5,5] 面[6,6]=面[5,2] 面[5,8]=面[1,6] 面[5,5]=面[1,5] 面[5,2]=面[1,4] 面[1,6]=面[3,2] 面[1,5]=面[3,5] 面[1,4]=面[3,8] 面[3,2]=面[6,14] 面[3,5]=面[6,15] 面[3,8]=面[6,16] もしN=9ならば 面[4,11]=面[4,1] 面[4,12]=面[4,2] 面[4,1]=面[4,3] 面[4,2]=面[4,6] 面[4,3]=面[4,9] 面[4,6]=面[4,8] 面[4,9]=面[4,7] 面[4,8]=面[4,4] 面[4,7]=面[4,11] 面[4,4]=面[4,12] 面[6,11]=面[6,1] 面[6,12]=面[6,2] 面[6,13]=面[6,3] 面[6,1]=面[5,7] 面[6,2]=面[5,4] 面[6,3]=面[5,1] 面[5,7]=面[1,3] 面[5,4]=面[1,2] 面[5,1]=面[1,1] 面[1,3]=面[3,3] 面[1,2]=面[3,6] 面[1,1]=面[3,9] 面[3,3]=面[6,11] 面[3,6]=面[6,12] 面[3,9]=面[6,13] ●回転B(AXIS,CO,SI) AXISL=(AXIS@X^2+AXIS@Y^2+AXIS@Z^2)^0.5 AXIS@X=AXIS@X/AXISL AXIS@Y=AXIS@Y/AXISL AXIS@Z=AXIS@Z/AXISL TA@X=A@X*(CO+AXIS@X^2*(1-CO))+A@Y*(AXIS@X*AXIS@Y*(1-CO)-AXIS@Z*SI)+A@Z*(AXIS@X*AXIS@Z*(1-CO)+AXIS@Y*SI) TC@X=C@X*(CO+AXIS@X^2*(1-CO))+C@Y*(AXIS@X*AXIS@Y*(1-CO)-AXIS@Z*SI)+C@Z*(AXIS@X*AXIS@Z*(1-CO)+AXIS@Y*SI) TA@Y=A@X*(AXIS@X*AXIS@Y*(1-CO)+AXIS@Z*SI)+A@Y*(CO+AXIS@Y^2*(1-CO))+A@Z*(AXIS@Y*AXIS@Z*(1-CO)-AXIS@X*SI) TC@Y=C@X*(AXIS@X*AXIS@Y*(1-CO)+AXIS@Z*SI)+C@Y*(CO+AXIS@Y^2*(1-CO))+C@Z*(AXIS@Y*AXIS@Z*(1-CO)-AXIS@X*SI) TA@Z=A@X*(AXIS@X*AXIS@Z*(1-CO)-AXIS@Y*SI)+A@Y*(AXIS@Y*AXIS@Z*(1-CO)+AXIS@X*SI)+A@Z*(CO+AXIS@Z^2*(1-CO)) TC@Z=C@X*(AXIS@X*AXIS@Z*(1-CO)-AXIS@Y*SI)+C@Y*(AXIS@Y*AXIS@Z*(1-CO)+AXIS@X*SI)+C@Z*(CO+AXIS@Z^2*(1-CO)) TI@X=(TA@X+TC@X)/2 TI@Y=(TA@Y+TC@Y)/2 TI@Z=(TA@Z+TC@Z)/2 TIC@X=TC@X-TI@X TIC@Y=TC@Y-TI@Y TIC@Z=TC@Z-TI@Z 法線(TIC,TI,20000^0.5) TB@X=TI@X+RV@X TB@Y=TI@Y+RV@Y TB@Z=TI@Z+RV@Z TD@X=TA@X+TC@X-TB@X TD@Y=TA@Y+TC@Y-TB@Y TD@Z=TA@Z+TC@Z-TB@Z TE@X=TA@X-2*TI@X TE@Y=TA@Y-2*TI@Y TE@Z=TA@Z-2*TI@Z TF@X=TB@X-2*TI@X TF@Y=TB@Y-2*TI@Y TF@Z=TB@Z-2*TI@Z TG@X=TC@X-2*TI@X TG@Y=TC@Y-2*TI@Y TG@Z=TC@Z-2*TI@Z TH@X=TD@X-2*TI@X TH@Y=TD@Y-2*TI@Y TH@Z=TD@Z-2*TI@Z ●面描画B(N) 母艦を黒色で画面クリア 画面Bを$007800で画面クリア 線色=黒色 もしN=1ならば もしE@Z+G@Z-A@Z-C@Z>17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,1,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,1,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,1,「画面B」) もしD@Z+E@Z<-25ならば 面描画F(D,A,E,H,5,1,「画面B」) 塗り色=黒色 BSA@X=(E@X+2*A@X)/3 BSA@Y=(E@Y+2*A@Y)/3 BSA@Z=(E@Z+2*A@Z)/3 BSB@X=(F@X+2*B@X)/3 BSB@Y=(F@Y+2*B@Y)/3 BSB@Z=(F@Z+2*B@Z)/3 BSC@X=(G@X+2*C@X)/3 BSC@Y=(G@Y+2*C@Y)/3 BSC@Z=(G@Z+2*C@Z)/3 BSD@X=(H@X+2*D@X)/3 BSD@Y=(H@Y+2*D@Y)/3 BSD@Z=(H@Z+2*D@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,4,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,4,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,4,「画面B」) もしTD@Z+TE@Z<-25ならば 面描画F(TD,TA,TE,TH,5,4,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(TA,TB,TC,TD,1,0,「画面B」) もしE@Z+G@Z-A@Z-C@Z<=17ならば もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,4,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,4,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,4,「画面B」) もしTD@Z+TE@Z<-25ならば 面描画F(TD,TA,TE,TH,5,4,「画面B」) 塗り色=黒色 BSA@X=(TE@X+2*TA@X)/3 BSA@Y=(TE@Y+2*TA@Y)/3 BSA@Z=(TE@Z+2*TA@Z)/3 BSB@X=(TF@X+2*TB@X)/3 BSB@Y=(TF@Y+2*TB@Y)/3 BSB@Z=(TF@Z+2*TB@Z)/3 BSC@X=(TG@X+2*TC@X)/3 BSC@Y=(TG@Y+2*TC@Y)/3 BSC@Z=(TG@Z+2*TC@Z)/3 BSD@X=(TH@X+2*TD@X)/3 BSD@Y=(TH@Y+2*TD@Y)/3 BSD@Z=(TH@Z+2*TD@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,1,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,1,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,1,「画面B」) もしD@Z+E@Z<-25ならば 面描画F(D,A,E,H,5,1,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,0,「画面B」) もしN=2ならば もしE@Z+G@Z-A@Z-C@Z<=-17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,4,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,4,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,4,「画面B」) もしD@Z+E@Z<-25ならば 面描画F(D,A,E,H,5,4,「画面B」) 塗り色=黒色 BSA@X=(E@X+2*A@X)/3 BSA@Y=(E@Y+2*A@Y)/3 BSA@Z=(E@Z+2*A@Z)/3 BSB@X=(F@X+2*B@X)/3 BSB@Y=(F@Y+2*B@Y)/3 BSB@Z=(F@Z+2*B@Z)/3 BSC@X=(G@X+2*C@X)/3 BSC@Y=(G@Y+2*C@Y)/3 BSC@Z=(G@Z+2*C@Z)/3 BSD@X=(H@X+2*D@X)/3 BSD@Y=(H@Y+2*D@Y)/3 BSD@Z=(H@Z+2*D@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,3,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,3,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,3,「画面B」) もしTD@Z+TE@Z<-25ならば 面描画F(TD,TA,TE,TH,5,3,「画面B」) 塗り色=黒色 BSA@X=(TA@X+2*TE@X)/3 BSA@Y=(TA@Y+2*TE@Y)/3 BSA@Z=(TA@Z+2*TE@Z)/3 BSB@X=(TB@X+2*TF@X)/3 BSB@Y=(TB@Y+2*TF@Y)/3 BSB@Z=(TB@Z+2*TF@Z)/3 BSC@X=(TC@X+2*TG@X)/3 BSC@Y=(TC@Y+2*TG@Y)/3 BSC@Z=(TC@Z+2*TG@Z)/3 BSD@X=(TD@X+2*TH@X)/3 BSD@Y=(TD@Y+2*TH@Y)/3 BSD@Z=(TD@Z+2*TH@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,2,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,2,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,2,「画面B」) もしD@Z+E@Z<-25ならば 面描画F(D,A,E,H,5,2,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,0,「画面B」) もしE@Z+G@Z-A@Z-C@Z>-17&&E@Z+G@Z-A@Z-C@Z<17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,2,「画面B」) 面描画F(A,B,F,E,2,4,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,2,「画面B」) 面描画F(B,C,G,F,3,4,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,2,「画面B」) 面描画F(C,D,H,G,4,4,「画面B」) もしD@Z+E@Z<-25ならば 面描画F(D,A,E,H,5,2,「画面B」) 面描画F(D,A,E,H,5,4,「画面B」) 塗り色=黒色 BSA@X=(A@X+2*E@X)/3 BSA@Y=(A@Y+2*E@Y)/3 BSA@Z=(A@Z+2*E@Z)/3 BSB@X=(B@X+2*F@X)/3 BSB@Y=(B@Y+2*F@Y)/3 BSB@Z=(B@Z+2*F@Z)/3 BSC@X=(C@X+2*G@X)/3 BSC@Y=(C@Y+2*G@Y)/3 BSC@Z=(C@Z+2*G@Z)/3 BSD@X=(D@X+2*H@X)/3 BSD@Y=(D@Y+2*H@Y)/3 BSD@Z=(D@Z+2*H@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) BSA@X=(E@X+2*A@X)/3 BSA@Y=(E@Y+2*A@Y)/3 BSA@Z=(E@Z+2*A@Z)/3 BSB@X=(F@X+2*B@X)/3 BSB@Y=(F@Y+2*B@Y)/3 BSB@Z=(F@Z+2*B@Z)/3 BSC@X=(G@X+2*C@X)/3 BSC@Y=(G@Y+2*C@Y)/3 BSC@Z=(G@Z+2*C@Z)/3 BSD@X=(H@X+2*D@X)/3 BSD@Y=(H@Y+2*D@Y)/3 BSD@Z=(H@Z+2*D@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,3,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,3,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,3,「画面B」) もしTD@Z+TE@Z<-25ならば 面描画F(TD,TA,TE,TH,5,3,「画面B」) もしE@Z+G@Z-A@Z-C@Z>=17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,2,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,2,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,2,「画面B」) もしD@Z+E@Z<-25ならば 面描画F(D,A,E,H,5,2,「画面B」) 塗り色=黒色 BSA@X=(A@X+2*E@X)/3 BSA@Y=(A@Y+2*E@Y)/3 BSA@Z=(A@Z+2*E@Z)/3 BSB@X=(B@X+2*F@X)/3 BSB@Y=(B@Y+2*F@Y)/3 BSB@Z=(B@Z+2*F@Z)/3 BSC@X=(C@X+2*G@X)/3 BSC@Y=(C@Y+2*G@Y)/3 BSC@Z=(C@Z+2*G@Z)/3 BSD@X=(D@X+2*H@X)/3 BSD@Y=(D@Y+2*H@Y)/3 BSD@Z=(D@Z+2*H@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,3,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,3,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,3,「画面B」) もしTD@Z+TE@Z<-25ならば 面描画F(TD,TA,TE,TH,5,3,「画面B」) 塗り色=黒色 BSA@X=(TE@X+2*TA@X)/3 BSA@Y=(TE@Y+2*TA@Y)/3 BSA@Z=(TE@Z+2*TA@Z)/3 BSB@X=(TF@X+2*TB@X)/3 BSB@Y=(TF@Y+2*TB@Y)/3 BSB@Z=(TF@Z+2*TB@Z)/3 BSC@X=(TG@X+2*TC@X)/3 BSC@Y=(TG@Y+2*TC@Y)/3 BSC@Z=(TG@Z+2*TC@Z)/3 BSD@X=(TH@X+2*TD@X)/3 BSD@Y=(TH@Y+2*TD@Y)/3 BSD@Z=(TH@Z+2*TD@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,4,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,4,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,4,「画面B」) もしD@Z+E@Z<-25ならば 面描画F(D,A,E,H,5,4,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,0,「画面B」) もしN=3ならば もしE@Z+G@Z-A@Z-C@Z<=-17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,5,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,5,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,5,「画面B」) もしD@Z+E@Z<-25ならば 面描画F(D,A,E,H,5,5,「画面B」) 塗り色=黒色 BSA@X=(A@X+2*E@X)/3 BSA@Y=(A@Y+2*E@Y)/3 BSA@Z=(A@Z+2*E@Z)/3 BSB@X=(B@X+2*F@X)/3 BSB@Y=(B@Y+2*F@Y)/3 BSB@Z=(B@Z+2*F@Z)/3 BSC@X=(C@X+2*G@X)/3 BSC@Y=(C@Y+2*G@Y)/3 BSC@Z=(C@Z+2*G@Z)/3 BSD@X=(D@X+2*H@X)/3 BSD@Y=(D@Y+2*H@Y)/3 BSD@Z=(D@Z+2*H@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,2,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,2,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,2,「画面B」) もしTD@Z+TE@Z<-25ならば 面描画F(TD,TA,TE,TH,5,2,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(TE,TF,TG,TH,6,0,「画面B」) もしE@Z+G@Z-A@Z-C@Z>-17ならば もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,2,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,2,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,2,「画面B」) もしTD@Z+TE@Z<-25ならば 面描画F(TD,TA,TE,TH,5,2,「画面B」) 塗り色=黒色 BSA@X=(TA@X+2*TE@X)/3 BSA@Y=(TA@Y+2*TE@Y)/3 BSA@Z=(TA@Z+2*TE@Z)/3 BSB@X=(TB@X+2*TF@X)/3 BSB@Y=(TB@Y+2*TF@Y)/3 BSB@Z=(TB@Z+2*TF@Z)/3 BSC@X=(TC@X+2*TG@X)/3 BSC@Y=(TC@Y+2*TG@Y)/3 BSC@Z=(TC@Z+2*TG@Z)/3 BSD@X=(TD@X+2*TH@X)/3 BSD@Y=(TD@Y+2*TH@Y)/3 BSD@Z=(TD@Z+2*TH@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,5,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,5,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,5,「画面B」) もしD@Z+E@Z<-25ならば 面描画F(D,A,E,H,5,5,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,0,「画面B」) もしN=4ならば もしA@Z+H@Z-B@Z-G@Z>17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,10,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,10,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,6,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,10,「画面B」) 塗り色=黒色 BSA@X=(E@X+2*F@X)/3 BSA@Y=(E@Y+2*F@Y)/3 BSA@Z=(E@Z+2*F@Z)/3 BSB@X=(H@X+2*G@X)/3 BSB@Y=(H@Y+2*G@Y)/3 BSB@Z=(H@Z+2*G@Z)/3 BSC@X=(D@X+2*C@X)/3 BSC@Y=(D@Y+2*C@Y)/3 BSC@Z=(D@Z+2*C@Z)/3 BSD@X=(A@X+2*B@X)/3 BSD@Y=(A@Y+2*B@Y)/3 BSD@Z=(A@Z+2*B@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,7,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,7,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,9,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,7,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(TB,TC,TG,TF,3,0,「画面B」) もしA@Z+H@Z-B@Z-G@Z<=17ならば もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,7,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,7,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,9,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,7,「画面B」) 塗り色=黒色 BSA@X=(TE@X+2*TF@X)/3 BSA@Y=(TE@Y+2*TF@Y)/3 BSA@Z=(TE@Z+2*TF@Z)/3 BSB@X=(TH@X+2*TG@X)/3 BSB@Y=(TH@Y+2*TG@Y)/3 BSB@Z=(TH@Z+2*TG@Z)/3 BSC@X=(TD@X+2*TC@X)/3 BSC@Y=(TD@Y+2*TC@Y)/3 BSC@Z=(TD@Z+2*TC@Z)/3 BSD@X=(TA@X+2*TB@X)/3 BSD@Y=(TA@Y+2*TB@Y)/3 BSD@Z=(TA@Z+2*TB@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,10,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,10,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,6,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,10,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,0,「画面B」) もしN=5ならば もしA@Z+H@Z-B@Z-G@Z<=-17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,7,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,7,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,9,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,7,「画面B」) 塗り色=黒色 BSA@X=(E@X+2*F@X)/3 BSA@Y=(E@Y+2*F@Y)/3 BSA@Z=(E@Z+2*F@Z)/3 BSB@X=(H@X+2*G@X)/3 BSB@Y=(H@Y+2*G@Y)/3 BSB@Z=(H@Z+2*G@Z)/3 BSC@X=(D@X+2*C@X)/3 BSC@Y=(D@Y+2*C@Y)/3 BSC@Z=(D@Z+2*C@Z)/3 BSD@X=(A@X+2*B@X)/3 BSD@Y=(A@Y+2*B@Y)/3 BSD@Z=(A@Z+2*B@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,8,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,8,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,8,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,8,「画面B」) 塗り色=黒色 BSA@X=(TF@X+2*TE@X)/3 BSA@Y=(TF@Y+2*TE@Y)/3 BSA@Z=(TF@Z+2*TE@Z)/3 BSB@X=(TG@X+2*TH@X)/3 BSB@Y=(TG@Y+2*TH@Y)/3 BSB@Z=(TG@Z+2*TH@Z)/3 BSC@X=(TC@X+2*TD@X)/3 BSC@Y=(TC@Y+2*TD@Y)/3 BSC@Z=(TC@Z+2*TD@Z)/3 BSD@X=(TB@X+2*TA@X)/3 BSD@Y=(TB@Y+2*TA@Y)/3 BSD@Z=(TB@Z+2*TA@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,9,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,9,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,7,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,9,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,0,「画面B」) もしA@Z+H@Z-B@Z-G@Z>-17&&A@Z+H@Z-B@Z-G@Z<17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,9,「画面B」) 面描画F(A,B,F,E,2,7,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,9,「画面B」) 面描画F(E,F,G,H,6,7,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,7,「画面B」) 面描画F(C,D,H,G,4,9,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,9,「画面B」) 面描画F(A,B,C,D,1,7,「画面B」) 塗り色=黒色 BSA@X=(E@X+2*F@X)/3 BSA@Y=(E@Y+2*F@Y)/3 BSA@Z=(E@Z+2*F@Z)/3 BSB@X=(H@X+2*G@X)/3 BSB@Y=(H@Y+2*G@Y)/3 BSB@Z=(H@Z+2*G@Z)/3 BSC@X=(D@X+2*C@X)/3 BSC@Y=(D@Y+2*C@Y)/3 BSC@Z=(D@Z+2*C@Z)/3 BSD@X=(A@X+2*B@X)/3 BSD@Y=(A@Y+2*B@Y)/3 BSD@Z=(A@Z+2*B@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) BSA@X=(F@X+2*E@X)/3 BSA@Y=(F@Y+2*E@Y)/3 BSA@Z=(F@Z+2*E@Z)/3 BSB@X=(G@X+2*H@X)/3 BSB@Y=(G@Y+2*H@Y)/3 BSB@Z=(G@Z+2*H@Z)/3 BSC@X=(C@X+2*D@X)/3 BSC@Y=(C@Y+2*D@Y)/3 BSC@Z=(C@Z+2*D@Z)/3 BSD@X=(B@X+2*A@X)/3 BSD@Y=(B@Y+2*A@Y)/3 BSD@Z=(B@Z+2*A@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,8,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,8,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,8,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,8,「画面B」) もしA@Z+H@Z-B@Z-G@Z>=17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,9,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,9,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,7,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,9,「画面B」) 塗り色=黒色 BSA@X=(F@X+2*E@X)/3 BSA@Y=(F@Y+2*E@Y)/3 BSA@Z=(F@Z+2*E@Z)/3 BSB@X=(G@X+2*H@X)/3 BSB@Y=(G@Y+2*H@Y)/3 BSB@Z=(G@Z+2*H@Z)/3 BSC@X=(C@X+2*D@X)/3 BSC@Y=(C@Y+2*D@Y)/3 BSC@Z=(C@Z+2*D@Z)/3 BSD@X=(B@X+2*A@X)/3 BSD@Y=(B@Y+2*A@Y)/3 BSD@Z=(B@Z+2*A@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,8,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,8,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,8,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,8,「画面B」) 塗り色=黒色 BSA@X=(TE@X+2*TF@X)/3 BSA@Y=(TE@Y+2*TF@Y)/3 BSA@Z=(TE@Z+2*TF@Z)/3 BSB@X=(TH@X+2*TG@X)/3 BSB@Y=(TH@Y+2*TG@Y)/3 BSB@Z=(TH@Z+2*TG@Z)/3 BSC@X=(TD@X+2*TC@X)/3 BSC@Y=(TD@Y+2*TC@Y)/3 BSC@Z=(TD@Z+2*TC@Z)/3 BSD@X=(TA@X+2*TB@X)/3 BSD@Y=(TA@Y+2*TB@Y)/3 BSD@Z=(TA@Z+2*TB@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,7,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,7,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,9,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,7,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,0,「画面B」) もしN=6ならば もしA@Z+H@Z-B@Z-G@Z<=-17ならば もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,6,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,6,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,10,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,6,「画面B」) 塗り色=黒色 BSA@X=(F@X+2*E@X)/3 BSA@Y=(F@Y+2*E@Y)/3 BSA@Z=(F@Z+2*E@Z)/3 BSB@X=(G@X+2*H@X)/3 BSB@Y=(G@Y+2*H@Y)/3 BSB@Z=(G@Z+2*H@Z)/3 BSC@X=(C@X+2*D@X)/3 BSC@Y=(C@Y+2*D@Y)/3 BSC@Z=(C@Z+2*D@Z)/3 BSD@X=(B@X+2*A@X)/3 BSD@Y=(B@Y+2*A@Y)/3 BSD@Z=(B@Z+2*A@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,9,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,9,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,7,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,9,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(TD,TA,TE,TH,5,0,「画面B」) もしA@Z+H@Z-B@Z-G@Z>-17ならば もしTA@Z+TF@Z<-25ならば 面描画F(TA,TB,TF,TE,2,9,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,9,「画面B」) もしTC@Z+TH@Z<-25ならば 面描画F(TC,TD,TH,TG,4,7,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,9,「画面B」) 塗り色=黒色 BSA@X=(TF@X+2*TE@X)/3 BSA@Y=(TF@Y+2*TE@Y)/3 BSA@Z=(TF@Z+2*TE@Z)/3 BSB@X=(TG@X+2*TH@X)/3 BSB@Y=(TG@Y+2*TH@Y)/3 BSB@Z=(TG@Z+2*TH@Z)/3 BSC@X=(TC@X+2*TD@X)/3 BSC@Y=(TC@Y+2*TD@Y)/3 BSC@Z=(TC@Z+2*TD@Z)/3 BSD@X=(TB@X+2*TA@X)/3 BSD@Y=(TB@Y+2*TA@Y)/3 BSD@Z=(TB@Z+2*TA@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,6,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,6,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,10,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,6,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,0,「画面B」) もしN=7ならば もしA@Z+F@Z-D@Z-G@Z<-17ならば もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,6,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,1,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,10,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,1,「画面B」) 塗り色=黒色 BSA@X=(H@X+2*E@X)/3 BSA@Y=(H@Y+2*E@Y)/3 BSA@Z=(H@Z+2*E@Z)/3 BSB@X=(D@X+2*A@X)/3 BSB@Y=(D@Y+2*A@Y)/3 BSB@Z=(D@Z+2*A@Z)/3 BSC@X=(C@X+2*B@X)/3 BSC@Y=(C@Y+2*B@Y)/3 BSC@Z=(C@Z+2*B@Z)/3 BSD@X=(G@X+2*F@X)/3 BSD@Y=(G@Y+2*F@Y)/3 BSD@Z=(G@Z+2*F@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,9,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,4,「画面B」) もしTA@Z+TH@Z<-25ならば 面描画F(TD,TA,TE,TH,5,7,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,4,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(TA,TB,TF,TE,2,0,「画面B」) もしA@Z+F@Z-D@Z-G@Z>=-17ならば もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,9,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,4,「画面B」) もしTA@Z+TH@Z<-25ならば 面描画F(TD,TA,TE,TH,5,7,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,4,「画面B」) 塗り色=黒色 BSA@X=(TH@X+2*TE@X)/3 BSA@Y=(TH@Y+2*TE@Y)/3 BSA@Z=(TH@Z+2*TE@Z)/3 BSB@X=(TD@X+2*TA@X)/3 BSB@Y=(TD@Y+2*TA@Y)/3 BSB@Z=(TD@Z+2*TA@Z)/3 BSC@X=(TC@X+2*TB@X)/3 BSC@Y=(TC@Y+2*TB@Y)/3 BSC@Z=(TC@Z+2*TB@Z)/3 BSD@X=(TG@X+2*TF@X)/3 BSD@Y=(TG@Y+2*TF@Y)/3 BSD@Z=(TG@Z+2*TF@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,6,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,1,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,10,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,1,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,0,「画面B」) もしN=8ならば もしA@Z+F@Z-D@Z-G@Z<=-17ならば もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,7,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,2,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,9,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,2,「画面B」) 塗り色=黒色 BSA@X=(E@X+2*H@X)/3 BSA@Y=(E@Y+2*H@Y)/3 BSA@Z=(E@Z+2*H@Z)/3 BSB@X=(A@X+2*D@X)/3 BSB@Y=(A@Y+2*D@Y)/3 BSB@Z=(A@Z+2*D@Z)/3 BSC@X=(B@X+2*C@X)/3 BSC@Y=(B@Y+2*C@Y)/3 BSC@Z=(B@Z+2*C@Z)/3 BSD@X=(F@X+2*G@X)/3 BSD@Y=(F@Y+2*G@Y)/3 BSD@Z=(F@Z+2*G@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,8,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,3,「画面B」) もしTA@Z+TH@Z<-25ならば 面描画F(TD,TA,TE,TH,5,8,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,3,「画面B」) 塗り色=黒色 BSA@X=(TH@X+2*TE@X)/3 BSA@Y=(TH@Y+2*TE@Y)/3 BSA@Z=(TH@Z+2*TE@Z)/3 BSB@X=(TD@X+2*TA@X)/3 BSB@Y=(TD@Y+2*TA@Y)/3 BSB@Z=(TD@Z+2*TA@Z)/3 BSC@X=(TC@X+2*TB@X)/3 BSC@Y=(TC@Y+2*TB@Y)/3 BSC@Z=(TC@Z+2*TB@Z)/3 BSD@X=(TG@X+2*TF@X)/3 BSD@Y=(TG@Y+2*TF@Y)/3 BSD@Z=(TG@Z+2*TF@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,9,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,4,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,7,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,4,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,0,「画面B」) もしA@Z+F@Z-D@Z-G@Z<17&&A@Z+F@Z-D@Z-G@Z>-17ならば もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,7,「画面B」) 面描画F(B,C,G,F,3,9,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,2,「画面B」) 面描画F(E,F,G,H,6,4,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,9,「画面B」) 面描画F(D,A,E,H,5,7,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,2,「画面B」) 面描画F(A,B,C,D,1,4,「画面B」) 塗り色=黒色 BSA@X=(H@X+2*E@X)/3 BSA@Y=(H@Y+2*E@Y)/3 BSA@Z=(H@Z+2*E@Z)/3 BSB@X=(D@X+2*A@X)/3 BSB@Y=(D@Y+2*A@Y)/3 BSB@Z=(D@Z+2*A@Z)/3 BSC@X=(C@X+2*B@X)/3 BSC@Y=(C@Y+2*B@Y)/3 BSC@Z=(C@Z+2*B@Z)/3 BSD@X=(G@X+2*F@X)/3 BSD@Y=(G@Y+2*F@Y)/3 BSD@Z=(G@Z+2*F@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) BSA@X=(E@X+2*H@X)/3 BSA@Y=(E@Y+2*H@Y)/3 BSA@Z=(E@Z+2*H@Z)/3 BSB@X=(A@X+2*D@X)/3 BSB@Y=(A@Y+2*D@Y)/3 BSB@Z=(A@Z+2*D@Z)/3 BSC@X=(B@X+2*C@X)/3 BSC@Y=(B@Y+2*C@Y)/3 BSC@Z=(B@Z+2*C@Z)/3 BSD@X=(F@X+2*G@X)/3 BSD@Y=(F@Y+2*G@Y)/3 BSD@Z=(F@Z+2*G@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,8,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,3,「画面B」) もしTA@Z+TH@Z<-25ならば 面描画F(TD,TA,TE,TH,5,8,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,3,「画面B」) もしA@Z+F@Z-D@Z-G@Z>=17ならば もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,9,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,4,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,7,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,4,「画面B」) 塗り色=黒色 BSA@X=(H@X+2*E@X)/3 BSA@Y=(H@Y+2*E@Y)/3 BSA@Z=(H@Z+2*E@Z)/3 BSB@X=(D@X+2*A@X)/3 BSB@Y=(D@Y+2*A@Y)/3 BSB@Z=(D@Z+2*A@Z)/3 BSC@X=(C@X+2*B@X)/3 BSC@Y=(C@Y+2*B@Y)/3 BSC@Z=(C@Z+2*B@Z)/3 BSD@X=(G@X+2*F@X)/3 BSD@Y=(G@Y+2*F@Y)/3 BSD@Z=(G@Z+2*F@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,8,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,3,「画面B」) もしTA@Z+TH@Z<-25ならば 面描画F(TD,TA,TE,TH,5,8,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,3,「画面B」) 塗り色=黒色 BSA@X=(TE@X+2*TH@X)/3 BSA@Y=(TE@Y+2*TH@Y)/3 BSA@Z=(TE@Z+2*TH@Z)/3 BSB@X=(TA@X+2*TD@X)/3 BSB@Y=(TA@Y+2*TD@Y)/3 BSB@Z=(TA@Z+2*TD@Z)/3 BSC@X=(TB@X+2*TC@X)/3 BSC@Y=(TB@Y+2*TC@Y)/3 BSC@Z=(TB@Z+2*TC@Z)/3 BSD@X=(TF@X+2*TG@X)/3 BSD@Y=(TF@Y+2*TG@Y)/3 BSD@Z=(TF@Z+2*TG@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,7,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,2,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,9,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,2,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(C,D,H,G,4,0,「画面B」) もしN=9ならば もしA@Z+F@Z-D@Z-G@Z>17ならば もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,10,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,5,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,6,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,5,「画面B」) 塗り色=黒色 BSA@X=(E@X+2*H@X)/3 BSA@Y=(E@Y+2*H@Y)/3 BSA@Z=(E@Z+2*H@Z)/3 BSB@X=(A@X+2*D@X)/3 BSB@Y=(A@Y+2*D@Y)/3 BSB@Z=(A@Z+2*D@Z)/3 BSC@X=(B@X+2*C@X)/3 BSC@Y=(B@Y+2*C@Y)/3 BSC@Z=(B@Z+2*C@Z)/3 BSD@X=(F@X+2*G@X)/3 BSD@Y=(F@Y+2*G@Y)/3 BSD@Z=(F@Z+2*G@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,7,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,2,「画面B」) もしTA@Z+TH@Z<-25ならば 面描画F(TD,TA,TE,TH,5,9,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,2,「画面B」) もしC@Z+H@Z<-25ならば 面描画F(TC,TD,TH,TG,4,0,「画面B」) もしA@Z+F@Z-D@Z-G@Z<=17ならば もしTB@Z+TG@Z<-25ならば 面描画F(TB,TC,TG,TF,3,7,「画面B」) もしTE@Z+TG@Z<-25ならば 面描画F(TE,TF,TG,TH,6,2,「画面B」) もしTA@Z+TH@Z<-25ならば 面描画F(TD,TA,TE,TH,5,9,「画面B」) もしTA@Z+TC@Z<-25ならば 面描画F(TA,TB,TC,TD,1,2,「画面B」) 塗り色=黒色 BSA@X=(TE@X+2*TH@X)/3 BSA@Y=(TE@Y+2*TH@Y)/3 BSA@Z=(TE@Z+2*TH@Z)/3 BSB@X=(TA@X+2*TD@X)/3 BSB@Y=(TA@Y+2*TD@Y)/3 BSB@Z=(TA@Z+2*TD@Z)/3 BSC@X=(TB@X+2*TC@X)/3 BSC@Y=(TB@Y+2*TC@Y)/3 BSC@Z=(TB@Z+2*TC@Z)/3 BSD@X=(TF@X+2*TG@X)/3 BSD@Y=(TF@Y+2*TG@Y)/3 BSD@Z=(TF@Z+2*TG@Z)/3 POLYT(BSA,BSB,BSC,BSD,「画面B」) もしB@Z+G@Z<-25ならば 面描画F(B,C,G,F,3,10,「画面B」) もしE@Z+G@Z<-25ならば 面描画F(E,F,G,H,6,5,「画面B」) もしA@Z+H@Z<-25ならば 面描画F(D,A,E,H,5,6,「画面B」) もしA@Z+C@Z<-25ならば 面描画F(A,B,C,D,1,5,「画面B」) もしA@Z+F@Z<-25ならば 面描画F(A,B,F,E,2,0,「画面B」) 画面Bを母艦の0,0へ画像コピー ●選択面取得(X,Y) 面描画C TN=点取得(画面C,X,Y) 選択面=0 N=1 9回 もしTN=識別配列[1,N]ならば 選択面=10+N もしTN=識別配列[2,N]ならば 選択面=20+N もしTN=識別配列[3,N]ならば 選択面=30+N もしTN=識別配列[4,N]ならば 選択面=40+N もしTN=識別配列[5,N]ならば 選択面=50+N もしTN=識別配列[6,N]ならば 選択面=60+N N=N+1 画面Bとはイメージ そのW=800 そのH=600 その可視はオフ 画面Cとはイメージ そのW=800 そのH=600 その可視はオフ 母艦=「ルービックキューブ」 原点X=400 原点Y=300 原点Z=800 母艦のH=600 母艦のW=800 DeltaZ=0.001 線太さ=2 O@X=0 O@Y=0 O@Z=0 A@X=-100 A@Y=-100 A@Z=-100 C@X=100 C@Y=-100 C@Z=100 マウス座標F@Z=200 マウス座標S@Z=200 選択面=0 N=1 9回 面[1,N]=$0000D8 面[2,N]=$00B800 面[3,N]=$F00000 面[4,N]=$FFFF00 面[5,N]=$FAAE5A 面[6,N]=$FFFFFF N=N+1 N=1 9回 面[11,N]=識別配列[6,N-1] 識別配列[1,N]=識別配列[6,N-1] (識別配列[1,N]=識別配列[6,N-1])の間 点描画(画面C,1,1,面[11,N]) 識別配列[1,N]=点取得(画面C,1,1) もし識別配列[1,N]=識別配列[6,N-1]ならば 面[11,N]=面[11,N]+$000001 もし識別配列[1,N]<識別配列[6,N-1]ならば TN=識別配列[1,N] (識別配列[1,N]=TN)の間 面[11,N]=$000100+面[11,N] 点描画(画面C,1,1,面[11,N]) 識別配列[1,N]=点取得(画面C,1,1) 面[12,N]=識別配列[1,N] 識別配列[2,N]=識別配列[1,N] (識別配列[2,N]=識別配列[1,N])の間 点描画(画面C,1,1,面[12,N]) 識別配列[2,N]=点取得(画面C,1,1) もし識別配列[2,N]=識別配列[1,N]ならば 面[12,N]=面[12,N]+$000001 もし識別配列[2,N]<識別配列[1,N]ならば TN=識別配列[2,N] (識別配列[2,N]=TN)の間 面[12,N]=$000100+面[12,N] 点描画(画面C,1,1,面[12,N]) 識別配列[2,N]=点取得(画面C,1,1) 面[13,N]=識別配列[2,N] 識別配列[3,N]=識別配列[2,N] (識別配列[3,N]=識別配列[2,N])の間 点描画(画面C,1,1,面[13,N]) 識別配列[3,N]=点取得(画面C,1,1) もし識別配列[3,N]=識別配列[2,N]ならば 面[13,N]=面[13,N]+$000001 もし識別配列[3,N]<識別配列[2,N]ならば TN=識別配列[3,N] (識別配列[3,N]=TN)の間 面[13,N]=$000100+面[13,N] 点描画(画面C,1,1,面[13,N]) 識別配列[3,N]=点取得(画面C,1,1) 面[14,N]=識別配列[3,N] 識別配列[4,N]=識別配列[3,N] (識別配列[4,N]=識別配列[3,N])の間 点描画(画面C,1,1,面[14,N]) 識別配列[4,N]=点取得(画面C,1,1) もし識別配列[4,N]=識別配列[3,N]ならば 面[14,N]=面[14,N]+$000001 もし識別配列[4,N]<識別配列[3,N]ならば TN=識別配列[4,N] (識別配列[4,N]=TN)の間 面[14,N]=$000100+面[14,N] 点描画(画面C,1,1,面[14,N]) 識別配列[4,N]=点取得(画面C,1,1) 面[15,N]=識別配列[4,N] 識別配列[5,N]=識別配列[4,N] (識別配列[5,N]=識別配列[4,N])の間 点描画(画面C,1,1,面[15,N]) 識別配列[5,N]=点取得(画面C,1,1) もし識別配列[5,N]=識別配列[4,N]ならば 面[15,N]=面[15,N]+$000001 もし識別配列[5,N]<識別配列[4,N]ならば TN=識別配列[5,N] (識別配列[5,N]=TN)の間 面[15,N]=$000100+面[15,N] 点描画(画面C,1,1,面[15,N]) 識別配列[5,N]=点取得(画面C,1,1) 面[16,N]=識別配列[5,N] 識別配列[6,N]=識別配列[5,N] (識別配列[6,N]=識別配列[5,N])の間 点描画(画面C,1,1,面[16,N]) 識別配列[6,N]=点取得(画面C,1,1) もし識別配列[6,N]=識別配列[5,N]ならば 面[16,N]=面[16,N]+$000001 もし識別配列[6,N]<識別配列[5,N]ならば TN=識別配列[6,N] (識別配列[6,N]=TN)の間 面[16,N]=$000100+面[16,N] 点描画(画面C,1,1,面[16,N]) 識別配列[6,N]=点取得(画面C,1,1) N=N+1 頂点算出 面描画 1の間 もしキー状態(2)+キー状態(1)=0ならば CC=0 もしキー状態(2)=1ならば マウス座標取得 マウス座標S@X=マウス座標F@X マウス座標S@Y=マウス座標F@Y マウス座標F@X=SMX マウス座標F@Y=SMY もし(マウス座標F@X!=マウス座標S@X||マウス座標F@Y!=マウス座標S@Y)&&CC>0ならば $007800で画面クリア 回転量=COS(0.006*((マウス座標F@X-マウス座標S@X)^2+(マウス座標F@Y-マウス座標S@Y)^2)^0.5) もし(マウス座標F@Y=マウス座標S@Y)ならば 回転軸@X=0 回転軸@Y=マウス座標S@X-マウス座標F@X 回転軸@Z=0 もし(マウス座標F@Y!=マウス座標S@Y)ならば 回転軸@X=マウス座標F@Y-マウス座標S@Y 回転軸@Y=(マウス座標S@X-マウス座標F@X)*(マウス座標F@Y-マウス座標S@Y)/(マウス座標F@Y-マウス座標S@Y) 回転軸@Z=0 回転(回転軸,回転量) 頂点補正 頂点算出 面描画 CC=CC+1 もしキー状態(96)=1ならば 配列回転処理(9の乱数+1) $007800で画面クリア 面描画 回転フラグ=0 識別変数=0 もしキー状態(1)=1&&CC=0ならば (キー状態(1)=1)の間 もしCC=0ならば マウス座標取得 マウス座標F@X=SMX マウス座標F@Y=SMY 選択面取得(RSMX,RSMY)
CALB@X=(B@X+G@X)/(((B@Z+G@Z)+原点Z)*DeltaZ) CALB@Y=(B@Y+G@Y)/(((B@Z+G@Z)+原点Z)*DeltaZ) CALD@X=(D@X+G@X)/(((D@Z+G@Z)+原点Z)*DeltaZ) CALD@Y=(D@Y+G@Y)/(((D@Z+G@Z)+原点Z)*DeltaZ) CALE@X=(E@X+G@X)/(((E@Z+G@Z)+原点Z)*DeltaZ) CALE@Y=(E@Y+G@Y)/(((E@Z+G@Z)+原点Z)*DeltaZ) PFMF@X=マウス座標F@X PFMF@Y=マウス座標F@Y
PFBF=(CALB@X*PFMF@X+CALB@Y*PFMF@Y)/(CALB@X^2+CALB@Y^2)^0.5 PFDF=(CALD@X*PFMF@X+CALD@Y*PFMF@Y)/(CALD@X^2+CALD@Y^2)^0.5 PFEF=(CALE@X*PFMF@X+CALE@Y*PFMF@Y)/(CALE@X^2+CALE@Y^2)^0.5 マウス座標取得 マウス座標S@X=SMX マウス座標S@Y=SMY PFMS@X=マウス座標S@X PFMS@Y=マウス座標S@Y
PFBS=(CALB@X*PFMS@X+CALB@Y*PFMS@Y)/(CALB@X^2+CALB@Y^2)^0.5 PFDS=(CALD@X*PFMS@X+CALD@Y*PFMS@Y)/(CALD@X^2+CALD@Y^2)^0.5 PFES=(CALE@X*PFMS@X+CALE@Y*PFMS@Y)/(CALE@X^2+CALE@Y^2)^0.5 もし選択面>10&&選択面<20ならば もし(ABS(PFDS-PFDF)>10&&回転フラグ=0)||識別変数=1ならば 識別変数=1 もし選択面=13||選択面=16||選択面=19ならば 回転フラグ=4 もし選択面=12||選択面=15||選択面=18ならば 回転フラグ=5 もし選択面=11||選択面=14||選択面=17ならば 回転フラグ=6 回転軸B@X=B@X-A@X 回転軸B@Y=B@Y-A@Y 回転軸B@Z=B@Z-A@Z 回転角=(PFDF-PFDS)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし(ABS(PFBS-PFBF)>10&&回転フラグ=0)||識別変数=2ならば 識別変数=2 もし選択面=17||選択面=18||選択面=19ならば 回転フラグ=7 もし選択面=14||選択面=15||選択面=16ならば 回転フラグ=8 もし選択面=11||選択面=12||選択面=13ならば 回転フラグ=9 回転軸B@X=A@X-D@X 回転軸B@Y=A@Y-D@Y 回転軸B@Z=A@Z-D@Z 回転角=(PFBF-PFBS)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし選択面>20&&選択面<30ならば もし(ABS(PFES-PFEF)>10&&回転フラグ=0)||識別変数=1ならば 識別変数=1 もし選択面=21||選択面=24||選択面=27ならば 回転フラグ=6 もし選択面=22||選択面=25||選択面=28ならば 回転フラグ=5 もし選択面=23||選択面=26||選択面=29ならば 回転フラグ=4 回転軸B@X=B@X-A@X 回転軸B@Y=B@Y-A@Y 回転軸B@Z=B@Z-A@Z 回転角=(PFES-PFEF)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし(ABS(PFBS-PFBF)>10&&回転フラグ=0)||識別変数=2ならば 識別変数=2 もし選択面=27||選択面=28||選択面=29ならば 回転フラグ=1 もし選択面=24||選択面=25||選択面=26ならば 回転フラグ=2 もし選択面=21||選択面=22||選択面=23ならば 回転フラグ=3 回転軸B@X=A@X-E@X 回転軸B@Y=A@Y-E@Y 回転軸B@Z=A@Z-E@Z 回転角=(PFBS-PFBF)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし選択面>30&&選択面<40ならば もし(ABS(PFDS-PFDF)>10&&回転フラグ=0)||識別変数=1ならば 識別変数=1 もし選択面=37||選択面=38||選択面=39ならば 回転フラグ=1 もし選択面=34||選択面=35||選択面=36ならば 回転フラグ=2 もし選択面=31||選択面=32||選択面=33ならば 回転フラグ=3 回転軸B@X=A@X-E@X 回転軸B@Y=A@Y-E@Y 回転軸B@Z=A@Z-E@Z 回転角=(PFDS-PFDF)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし(ABS(PFES-PFEF)>10&&回転フラグ=0)||識別変数=2ならば 識別変数=2 もし選択面=31||選択面=34||選択面=37ならば 回転フラグ=7 もし選択面=32||選択面=35||選択面=38ならば 回転フラグ=8 もし選択面=33||選択面=36||選択面=39ならば 回転フラグ=9 回転軸B@X=A@X-D@X 回転軸B@Y=A@Y-D@Y 回転軸B@Z=A@Z-D@Z 回転角=(PFEF-PFES)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし選択面>40&&選択面<50ならば もし(ABS(PFBS-PFBF)>10&&回転フラグ=0)||識別変数=1ならば 識別変数=1 もし選択面=47||選択面=48||選択面=49ならば 回転フラグ=1 もし選択面=44||選択面=45||選択面=46ならば 回転フラグ=2 もし選択面=41||選択面=42||選択面=43ならば 回転フラグ=3 回転軸B@X=A@X-E@X 回転軸B@Y=A@Y-E@Y 回転軸B@Z=A@Z-E@Z 回転角=(PFBF-PFBS)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし(ABS(PFES-PFEF)>10&&回転フラグ=0)||識別変数=2ならば 識別変数=2 もし選択面=41||選択面=44||選択面=47ならば 回転フラグ=4 もし選択面=42||選択面=45||選択面=48ならば 回転フラグ=5 もし選択面=43||選択面=46||選択面=49ならば 回転フラグ=6 回転軸B@X=B@X-A@X 回転軸B@Y=B@Y-A@Y 回転軸B@Z=B@Z-A@Z 回転角=(PFEF-PFES)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし選択面>50&&選択面<60ならば もし(ABS(PFDS-PFDF)>10&&回転フラグ=0)||識別変数=1ならば 識別変数=1 もし選択面=57||選択面=58||選択面=59ならば 回転フラグ=1 もし選択面=54||選択面=55||選択面=56ならば 回転フラグ=2 もし選択面=51||選択面=52||選択面=53ならば 回転フラグ=3 回転軸B@X=A@X-E@X 回転軸B@Y=A@Y-E@Y 回転軸B@Z=A@Z-E@Z 回転角=(PFDF-PFDS)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし(ABS(PFES-PFEF)>10&&回転フラグ=0)||識別変数=2ならば 識別変数=2 もし選択面=51||選択面=54||選択面=57ならば 回転フラグ=9 もし選択面=52||選択面=55||選択面=58ならば 回転フラグ=8 もし選択面=53||選択面=56||選択面=59ならば 回転フラグ=7 回転軸B@X=A@X-D@X 回転軸B@Y=A@Y-D@Y 回転軸B@Z=A@Z-D@Z 回転角=(PFES-PFEF)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし選択面>60&&選択面<70ならば もし(ABS(PFDS-PFDF)>10&&回転フラグ=0)||識別変数=1ならば 識別変数=1 もし選択面=63||選択面=66||選択面=69ならば 回転フラグ=4 もし選択面=62||選択面=65||選択面=68ならば 回転フラグ=5 もし選択面=61||選択面=64||選択面=67ならば 回転フラグ=6 回転軸B@X=B@X-A@X 回転軸B@Y=B@Y-A@Y 回転軸B@Z=B@Z-A@Z 回転角=(PFDS-PFDF)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし(ABS(PFBS-PFBF)>10&&回転フラグ=0)||識別変数=2ならば 識別変数=2 もし選択面=67||選択面=68||選択面=69ならば 回転フラグ=7 もし選択面=64||選択面=65||選択面=66ならば 回転フラグ=8 もし選択面=61||選択面=62||選択面=63ならば 回転フラグ=9 回転軸B@X=A@X-D@X 回転軸B@Y=A@Y-D@Y 回転軸B@Z=A@Z-D@Z 回転角=(PFBS-PFBF)*0.008 回転B(回転軸B,COS(回転角),SIN(回転角)) 面描画B(回転フラグ) もし回転フラグ=0ならば 面描画 CC=CC+1 0秒待つ もし回転フラグ>0ならば (回転角<0)の間 回転角=回転角+2*PI (回転角>=2*PI)の間 回転角=回転角-2*PI もし回転角>=(PI/4)&&回転角<(3*PI/4)ならば 配列回転処理(回転フラグ) もし回転角>=(3*PI/4)&&回転角<(5*PI/4)ならば 2回 配列回転処理(回転フラグ) もし回転角>=(5*PI/4)&&回転角<(7*PI/4)ならば 3回 配列回転処理(回転フラグ) $007800で画面クリア 面描画 0秒待つ
|
|