/ 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秒待つ
削除キー/

コメントを記入





Name/
E-Mail/
Title/
URL/
Icon/ (画像を選択/サンプル一覧)
削除キー/ (半角8文字以内)
確認キー/ (”日本語でナデシコ”と記入)
 

Pass/

BBS CGI RSS CGI
Child Tree RSS/SPAM対応版