最終更新日 2004年2月22日

空間LOGO : KITEのサンプルプログラム
■ サンプルプログラムを幾つか与えます。

 平面図形のサンプルは Harold Abelson and Andrea diSessa : TURTLE GEOMETRY (The Computer as a Medium for Exploring Mathmatics), The MIT Press にたくさんあります。この本には生物の動きのシミュレーションのプログラムなどおもしろいものがたくさん載っています。翻訳が出る話もあったみたいですが、中止になったみたいです。英語の本ですが易しいですから、LOGO に興味が出てきたなら是非お読み下さい。かってはLOGO は子供向けの教育言語として、またKITEには備わっていませんが、LIST処理を使った人工知能のための言語として人気があり、古い本で良ければ平面 LOGO の本は沢山出版されています。

平面 LOGO の例達:学内専用

 KITE は 空間 LOGO ですから、ここからは三次元のプログラミングを考えてみましょう。プログラムを理解するのはちょっと難しいかも分かりません。球面幾何学の公式を使います。正四面体を描く手続きを一般化してみます。四面体の模型を作って考えると良いです。
 例:
TO TETRA :A :B :C :D :E :F FD :A RT 180 - ACOS (:A*:A+:B*:B-:C*:C)/(2*:A*:B) FD :B RT 180 - ACOS (:B*:B+:C*:C-:A*:A)/(2*:B*:C) FD :C RT 180 - ACOS (:C*:C+:A*:A-:B*:B)/(2*:C*:A) LOCAL :X :Y :Z :X = ACOS (:C*:C+:A*:A-:B*:B)/(2*:C*:A) :Y = ACOS (:D*:D+:A*:A-:E*:E)/(2*:D*:A) :Z = ACOS (:D*:D+:C*:C-:F*:F)/(2*:D*:C) YAW 180 - ACOS ((COS :Z)-(COS :X)*(COS :Y))/((SIN :X)*(SIN :Y)) FD :A LT 180 - ACOS (:A*:A+:E*:E-:D*:D)/(2*:A*:E) FD :E LT 180 - ACOS (:E*:E+:D*:D-:A*:A)/(2*:E*:D) FD :D LT 180 - ACOS (:D*:D+:A*:A-:E*:E)/(2*:D*:A) LT :Y YAW 180 - ACOS ((COS :X)-(COS :Y)*(COS :Z))/((SIN :Y)*(SIN :Z)) FD :D LT 180 - ACOS (:D*:D+:F*:F-:C*:C)/(2*:D*:F) FD :F LT 180 - ACOS (:F*:F+:C*:C-:D*:D)/(2*:F*:C) FD :C LT 180 - ACOS (:C*:C+:D*:D-:F*:F)/(2*:C*:D) YAW -180 + ACOS ((COS :X)-(COS :Y)*(COS :Z))/((SIN :Y)*(SIN :Z)) RT :Y YAW -180 + ACOS ((COS :Z)-(COS :X)*(COS :Y))/((SIN :X)*(SIN :Y)) END これは四面体 ABCD の各辺 AB, BC, CA, AD, BD, CD の長さを与えたとき、その条件を満たす四面体を描くプログラムです。
 

 例:
正四面体を一般化します。
TO KAKUSUI :N :X IF (:N < 3) || (:N > 5) [STOP] LOCAL :Y :H :Y = :X / 2 / SIN 180 / :N :H = SQRT :X*:X-:Y*:Y PU FD :H PD PU2 DOWN2 90 FD2 :Y RT2 90 + 180 / :N PD2 ST2 REPEAT :N [FD2 :X RT2 360 / :N] SYNCHRO REPEAT :N [FD2 :X RT2 360 / :N] NONSYNCHRO PU BK :H PD PU2 LT2 90 + 180 / :N FD2 -:Y UP2 90 PD2 HT2 END は正三角錐(正四面体)、正四角錐、正五角錐を描く手続きです。

少し修正して、次のような手続きも正二十面体のために作っておきます。
TO KAKUSUI2 :N :X IF (:N < 3) || (:N > 5) [STOP] LOCAL :Y :H :Y = :X / 2 / SIN 180 / :N :H = SQRT :X*:X-:Y*:Y PU FD :H PD PU2 DOWN2 90 RT2 180 / :N FD2 :Y RT2 90 + 180 / :N PD2 ST2 REPEAT :N [FD2 :X RT2 360 / :N] SYNCHRO REPEAT :N [FD2 :X RT2 360 / :N] NONSYNCHRO PU BK :H PD PU2 LT2 90 + 180 / :N FD2 -:Y LT2 180 / :N UP2 90 PD2 HT2 END

 例:
KAKUSUI を使えば、正八面体を描く手続きが作れます。
TO OCTAHEDRON :X KAKUSUI 4 :X RT 180 RT2 180 KAKUSUI 4 :X RT 180 RT2 180 END

さらに、デルタ多面体の六面体と十面体です。
TO HEXAHEDRON :X KAKUSUI 3 :X RT 180 RT2 180 KAKUSUI 3 :X RT 180 RT2 180 END

TO DECAHEDRON :X KAKUSUI 5 :X RT 180 RT2 180 KAKUSUI 5 :X RT 180 RT2 180 END

 例:
正多角柱を描く手続きです。
TO KAKUCHU :N :X LOCAL :Y :H :Y = :X / 2 / SIN 180 / :N :H = :X / 2 PU FD :H DOWN 90 FD :Y RT 90+180/:N PD REPEAT :N [FD :X RT 360 / :N] PU2 FD2 -:H DOWN2 90 FD2 :Y RT2 90+180/:N PD2 ST2 REPEAT :N [FD2 :X RT2 360 / :N] SYNCHRO REPEAT :N [FD :X RT 360 / :N FD2 :X RT2 360 / :N] NONSYNCHRO PU LT 90+180/:N FD -:Y UP 90 BK :H PD PU2 LT2 90+180/:N FD2 -:Y UP2 90 BK2 -:H PD2 HT2 END

 例:
正多角反柱を描く手続きです。
TO HANKAKUCHU :N :X LOCAL :Y :Z :H :Y = :X / 2 / SIN 180 / :N :Z = 2 * :Y * SIN 90 / :N :H = (SQRT :X*:X - :Z*:Z) / 2 PU FD :H DOWN 90 FD :Y RT 90+180/:N PD REPEAT :N [FD :X RT 360 / :N] PU2 FD2 -:H DOWN2 90 RT2 180/:N FD2 :Y RT2 90+180/:N PD2 ST2 REPEAT :N [FD2 :X RT2 360 / :N] SYNCHRO REPEAT :N [FD :X RT 360 / :N FD2 0 FD2 :X RT2 360 / :N] NONSYNCHRO PU LT 90+180/:N FD -:Y UP 90 BK :H PD PU2 LT2 90+180/:N FD2 -:Y LT2 180/:N UP2 90 BK2 -:H PD2 HT2 END

 例: KAKUSUI, KAKUSUI2, HANKAKUCHU を使えば、正二十面体を描く手続きが定義できます。正五角反柱の上下に正五角錐を載せます。
TO ICOSAHEDRON :X LOCAL :Y :Z :H :Y = :X / 2 / SIN 180 / 5 :Z = 2 * :Y * SIN 90 / 5 :H = (SQRT :X*:X - :Z*:Z) / 2 PU FD :H PD PU2 FD2 :H PD2 KAKUSUI 5 :X PU FD -:H PD PU2 FD2 -:H PD2 HANKAKUCHU 5 :X PU FD -:H RT 180 PD PU2 FD2 -:H RT2 180 PD2 KAKUSUI2 5 :X PU RT 180 FD :H PD PU2 RT2 180 FD2 :H PD2 END

 例:最後は正十二面体です。参考書は一松信著「正多面体を解く」東海大学出版会です。内接球の半径と外接球の半径と二面角の情報が必要です。
TO DODECA :X LOCAL :Z :PHI :D :R :H :Y :Z = ((SIN 180/5)*(SIN 180/5)-2*(COS 180/3)*(COS 180/3))/((SIN 180/5)*(SIN 180/5)) :PHI = ACOS :Z :D = SQRT 1 - (COS 180/5)*(COS 180/5)-(COS 180/3)*(COS 180/3) :H = :X / (TAN 180/5)*(COS 180/3)/(2*:D) :R = :X * (SIN 180/3)/(2*:D) :Y = SQRT (:R*:R - :H*:H) PUSH PU FD :H DOWN 90 FD :Y RT 126 PD REPEAT 5 [FD :X RT 72] YAW -180 +:PHI LT 108 REPEAT 5 [ REPEAT 4 [FD :X RT 72] RT 108 YAW 180 - :PHI ] PU POP PD PUSH PU FD -:H DOWN 90 RT 36 FD :Y RT 126 PD REPEAT 5 [FD :X RT 72] YAW 180 -:PHI LT 108 REPEAT 5 [ REPEAT 4 [FD :X RT 72] RT 108 YAW -180 + :PHI ] PU POP PD END

 例:これらの立体は次の手続きを実行して、観察しましょう。図を描いた後で、実行すると図が回転します。アニメーションが作れます。
TO ROTATE FOR :i=0 TO 360 [LOOKAT 500*COS :I 500*SIN :I 500 0 0 0 0 1 0] END 図形が回転します。
 もっと簡単な方法は画面をマウスでドラッグして下さい。図が回転します。プログラミングが下手で制御が難しいですが。

 次に中村研究室の学生さん達が作ったプログラムを紹介します。
■ 正四面体(その一):豊田祐子作

TO tetra :a st2 pu2 fd2 (sqrt 3) * :a / 3 pd2 up 90 pu fd (sqrt 6) * :a / 3 pd synchro rt2 150 fd2 :a rt2 120 fd2 :a rt2 120 fd2 :a nonsynchro rt2 120 fd2 :a rt2 120 fd2 :a rt2 120 fd2 :a end

■ 正四面体(その二):豊田祐子作 TO tetra2 :a fd :a rt 120 fd :a rt 120 fd :a rt 120 pu fd :a / 2 rt 90 fd (sqrt 3) * :a / 6 up 90 fd (sqrt 6) * :a / 3 down 90 down asin (sqrt 6) / 3 pd fd :a pu bk :a up asin (sqrt 6) / 3 pd rt 120 down asin (sqrt 6) / 3 fd :a pu bk :a up asin (sqrt 6) / 3 pd rt 120 down asin (sqrt 6) / 3 fd :a end

■ 正四面体(その三):豊田祐子作 TO tetras :a st2 pu2 fd2 (sqrt 3) * :a / 3 pd2 up 90 pu fd (sqrt 6) * :a / 3 pd synchro surface setcolor rand rand rand rt2 150 fd2 :a setcolor rand rand rand rt2 120 fd2 :a setcolor rand rand rand rt2 120 fd2 :a nonsynchro surface polymode setcolor rand rand rand rt2 120 fd2 :a rt2 120 fd2 :a rt2 120 fd2 :a nonpolymode end

■ 立方体:松永弘子作 TO cube :size polymode setcolor 0 1 0 repeat 4 [fd :size rt 90] nonpolymode down 90 polymode setcolor 1 0 0 repeat 4 [fd :size rt 90] nonpolymode lt 90 up 90 polymode setcolor 0 0 1 repeat 4 [fd :size rt 90] nonpolymode pu fd :size pd up 90 polymode setcolor 1 1 0 repeat 4 [fd :size rt 90] nonpolymode pu fd :size down 90 rt 90 pd polymode setcolor 1 0 1 repeat 4 [fd :size rt 90] nonpolymode pu fd :size up 270 pd polymode setcolor 0 1 1 repeat 4 [fd :size rt 90] nonpolymode end

■ 正八面体:松永弘子作 TO hatimentai :size st2 up 90 pu fd :size/(sqrt 2) down 90 pu2 fd2 :size/(sqrt 2) rt2 135 pd2 nonsynchro repeat 4 [fd2 :size rt2 90] pd synchro surface setcolor 1 0 0 fd2 :size rt2 90 setcolor 0 1 0 fd2 :size rt2 90 setcolor 0 0 1 fd2 :size rt2 90 setcolor 1 1 0 fd2 :size rt2 90 nonsynchro nonsurface down 90 pu fd :size*(sqrt 2) down 90 synchro surface pd setcolor 1 0 1 fd2 :size rt2 90 setcolor 0 1 1 fd2 :size rt2 90 setcolor 1 1 1 fd2 :size rt2 90 setcolor 0 1/2 1/2 fd2 :size rt2 90 nonsynchro nonsurface end

■ 正十二面体(その一):豊田祐子作 TO dodecahedron :a :B=(:a * cos 36) / (2 * (sin 36 ) * sqrt(3-4 * (cos 36 )* (cos 36 ))) :C=asin (2 / sqrt 5) push pu up 90 fd :B down 90 repeat 5[push fd (:a * cos 36) / (2 * sin 36 ) down :C rt 90 pd repeat 5[fd :a /2 lt 72 fd :a / 2] pu pop lt 72] pu pop down 90 fd :B up 90 rt 36 repeat 5[push fd (:a * cos 36) / (2 * sin 36 ) up :C rt 90 pd repeat 5[fd :a/2 lt 72 fd :a /2] pu pop lt 72] end

■ 正十二面体(その二):豊田祐子作 TO dodecahedrons :a :B=(:a * cos 36) / (2 * (sin 36 ) * sqrt(3-4 * (cos 36 )* (cos 36 ))) :C=asin (2 / sqrt 5) push pu up 90 fd :B down 90 push fd ( :a * cos 36 ) / (2 * sin 36) rt 90 pd polymode setcolor rand rand rand repeat 5[fd :a / 2 rt 72 fd :a /2 ] nonpolymode pu pop repeat 5[polymode setcolor rand rand rand push fd (:a * cos 36) / (2 * sin 36 ) down :C rt 90 pd repeat 5[fd :a /2 lt 72 fd :a / 2] pu pop lt 72 nonpolymode] pu pop down 90 fd :B up 90 push lt 36 fd ( :a * cos 36 ) / (2 * sin 36) rt 90 pd polymode setcolor rand rand rand repeat 5[fd :a / 2 rt 72 fd :a /2 ] nonpolymode pu pop rt 36 repeat 5[polymode setcolor rand rand rand push fd (:a * cos 36) / (2 * sin 36 ) up :C rt 90 pd repeat 5[fd :a/2 lt 72 fd :a /2] pu pop lt 72 nonpolymode] end

■ 正二十面体(その一):松永弘子作 TO icosa :size push pu up 90 fd :size*sin(acos 1/(2*sin 36)) down 90 pd st2 push2 pu2 fd2 :size/(2* sin 36) pd2 rt2 126 synchro repeat 5 [fd2 :size rt2 72] nonsynchro repeat 5 [fd2 :size rt2 72] rt2 108 pu pop push down 90 fd :size*(sqrt 6)/3 up 90 rt 36 fd :size/(2*sin 36) lt 126 pd repeat 5 [ synchro fd :size fd2 0 nonsynchro lt 72 synchro fd 0 fd2 :size nonsynchro lt2 72 ] pu pop pu2 pop2 down 90 fd :size*(sqrt 6)/3 down2 90 fd2 :size*(sqrt 6)/3 down2 90 fd :size*sin(acos 1/(2*sin 36)) down 90 pd fd2 :size/(2*sin 36) pd2 rt2 126 synchro repeat 5 [fd2 :size rt2 72] nonsynchro repeat 5 [fd2 :size rt2 72] end

■ 正二十面体(その二):松永弘子作 TO icosa :size push pu up 90 fd :size*sin(acos 1/(2*sin 36)) down 90 pd st2 push2 pu2 fd2 :size/(2* sin 36) pd2 rt2 126 synchro repeat 5 [fd2 :size rt2 72] nonsynchro synchro surface repeat 5 [setcolor rand rand rand fd2 :size rt2 72] nonsynchro nonsurface rt2 108 pu pop push down 90 fd :size*(sqrt 6)/3 up 90 rt 36 fd :size/(2*sin 36) lt 126 pd repeat 5 [ synchro surface setcolor rand rand rand fd :size fd2 0 nonsynchro nonsurface lt 72 synchro surface setcolor rand rand rand fd 0 fd2 :size nonsynchro nonsurface lt2 72 ] pu pop pu2 pop2 down 90 fd :size*(sqrt 6)/3 down2 90 fd2 :size*(sqrt 6)/3 down2 90 fd :size*sin(acos 1/(2*sin 36)) down 90 pd fd2 :size/(2*sin 36) pd2 rt2 126 synchro surface repeat 5 [setcolor rand rand rand fd2 :size rt2 72] nonsynchro nonsurface synchro surface repeat 5 [setcolor rand rand rand fd2 :size rt2 72] nonsynchro nonsurface end

■ 星形小十二面体:豊田祐子作 TO pentagon :a :b :c :d :e :s pu get 1 :e polymode pu2 get 2 :a pd2 get 2 :c toward2 fd2 :s get 2 :a nonpolymode get 1 :a polymode pu2 get 2 :b pd2 get 2 :d toward2 fd2 :s get 2 :b nonpolymode get 1 :c polymode pu2 get 2 :b pd2 get 2 :e toward2 fd2 :s get 2 :b nonpolymode end TO smallstellateddodecahedron :a push st2 push2 pu up 90 fd :a * sin acos 1 /( 2 * sin 36 ) put 1 0 pu2 fd2 :a / (2 * sin 36) rt2 126 put 2 1 fd2 :a rt2 72 put 2 2 fd2 :a rt2 72 put 2 3 fd2 :a rt2 72 put 2 4 fd2 :a rt2 72 put 2 5 fd2 :a rt2 72 pop pop2 push push2 down 90 fd (:a * sqrt 6 )/3 fd :a * sin acos 1 /( 2 * sin 36 ) put 1 6 down2 90 fd2 (:a * sqrt 6 )/3 up2 90 lt2 180 fd2 :a / (2 * sin 36) rt2 126 put 2 7 fd2 :a rt2 72 put 2 8 fd2 :a rt2 72 put 2 9 fd2 :a rt2 72 put 2 10 fd2 :a rt2 72 put 2 11 fd2 :a rt2 72 pop pop2 pd pd2 setcolor rand rand rand pentagon 0 3 7 8 5 :a setcolor rand rand rand pentagon 0 2 11 7 4 :a setcolor rand rand rand pentagon 0 1 10 11 3 :a setcolor rand rand rand pentagon 0 5 9 10 2 :a setcolor rand rand rand pentagon 0 4 8 9 1 :a setcolor rand rand rand pentagon 1 2 3 4 5 :a setcolor rand rand rand pentagon 1 9 6 11 2 :a setcolor rand rand rand pentagon 1 5 8 6 10 :a setcolor rand rand rand pentagon 2 10 6 7 3 :a setcolor rand rand rand pentagon 3 11 6 8 4 :a setcolor rand rand rand pentagon 4 7 6 9 5 :a setcolor rand rand rand pentagon 7 11 10 9 8 :a end

■ 星形大十二面体:松永弘子作 TO pentagon :a :b :c :d :e polymode setcolor rand rand rand pu pu2 get 1 :e pd pd2 get 2 :a push2 get 2 :c toward2 fd2 (1-(1/(4*(cos 36)*(cos 36))))*distance2 pop2 nonpolymode polymode setcolor rand rand rand pu pu2 get 1 :d pd pd2 get 2 :e push2 get 2 :b toward2 fd2 (1-(1/(4*(cos 36)*(cos 36))))*distance2 pop2 nonpolymode polymode setcolor rand rand rand pu pu2 get 1 :c pd pd2 get 2 :d push2 get 2 :a toward2 fd2 (1-(1/(4*(cos 36)*(cos 36))))*distance2 pop2 nonpolymode end TO hosigatadai12mentai :size pu rt 126 put 1 1 fd :size rt 72 put 1 2 fd :size rt 72 put 1 3 fd :size rt 72 put 1 4 fd :size rt 72 put 1 0 fd :size rt 72 fd :size/2 lt 90 push up asin 2/sqrt 5 fd :size*(1+cos 36)/(2*sin 36) rt 126 put 1 5 fd :size rt 72 put 1 6 pop rt 90 fd :size/2 rt 72 fd :size/2 lt 90 push up asin 2/sqrt 5 fd :size*(1+cos 36)/(2*sin 36) rt 126 put 1 7 fd :size rt 72 put 1 8 pop rt 90 fd :size/2 rt 72 fd :size/2 lt 90 push up asin 2/sqrt 5 fd :size*(1+cos 36)/(2*sin 36) rt 126 put 1 9 fd :size rt 72 put 1 10 pop rt 90 fd :size/2 rt 72 fd :size/2 lt 90 push up asin 2/sqrt 5 fd :size*(1+cos 36)/(2*sin 36) rt 126 put 1 11 fd :size rt 72 put 1 12 pop rt 90 fd :size/2 rt 72 fd :size/2 lt 90 push up asin 2/sqrt 5 fd :size*(1+cos 36)/(2*sin 36) rt 126 put 1 13 fd :size rt 72 put 1 14 pop rt 90 fd :size/2 rt 72 rt 54 fd :size/(2*sin 36) up 90 fd :size*(cos 36)*(cos 60)/((sin 36)*sqrt (1-(cos 36)*(cos 36)-(cos 60)*(cos 60))) down 90 rt 36 up 180 fd :size/(2*sin 36) rt 126 put 1 15 fd :size rt 72 put 1 16 fd :size rt 72 put 1 17 fd :size rt 72 put 1 18 fd :size rt 72 put 1 19 pentagon 0 3 7 15 13 pentagon 0 11 18 7 2 pentagon 0 14 15 18 10 pentagon 1 4 9 19 5 pentagon 1 13 17 9 3 pentagon 1 6 19 17 12 pentagon 2 8 18 16 14 pentagon 2 5 16 11 4 pentagon 3 10 17 15 6 pentagon 4 12 16 19 8 pentagon 14 12 10 8 6 pentagon 13 5 7 9 11 st2 pu2 get 2 19 get 1 0 toward2 fd2 (1/2)*distance2 put 2 20 get 1 20 end

■ 大十二面体:豊田祐子作 TO greatdodecahedron :a push st2 push2 pu up 90 fd :a * sin acos 1 /( 2 * sin 36 ) put 1 0 pu2 fd2 :a / (2 * sin 36) rt2 126 put 2 1 fd2 :a rt2 72 put 2 2 fd2 :a rt2 72 put 2 3 fd2 :a rt2 72 put 2 4 fd2 :a rt2 72 put 2 5 fd2 :a rt2 72 pop pop2 push push2 down 90 fd (:a * sqrt 6 )/3 fd :a * sin acos 1 /( 2 * sin 36 ) put 1 6 down2 90 fd2 (:a * sqrt 6 )/3 up2 90 lt2 180 fd2 :a / (2 * sin 36) rt2 126 put 2 7 fd2 :a rt2 72 put 2 8 fd2 :a rt2 72 put 2 9 fd2 :a rt2 72 put 2 10 fd2 :a rt2 72 put 2 11 fd2 :a rt2 72 pop pop2 polymode setcolor rand rand rand get 1 1 pd get 1 2 get 1 3 get 1 4 get 1 5 get 1 1 nonpolymode pu polymode setcolor rand rand rand get 1 0 pd get 1 5 get 1 9 get 1 10 get 1 2 get 1 0 nonpolymode pu polymode setcolor rand rand rand get 1 11 pd get 1 7 get 1 4 get 1 0 get 1 2 get 1 11 nonpolymode pu polymode setcolor rand rand rand get 1 4 pd get 1 0 get 1 2 get 1 11 get 1 7 get 1 4 nonpolymode pu polymode setcolor rand rand rand get 1 5 pd get 1 0 get 1 3 get 1 7 get 1 8 get 1 5 nonpolymode pu polymode setcolor rand rand rand get 1 4 pd get 1 8 get 1 9 get 1 1 get 1 0 get 1 4 nonpolymode pu polymode setcolor rand rand rand get 1 7 pd get 1 8 get 1 9 get 1 10 get 1 1 get 1 7 nonpolymode pu polymode setcolor rand rand rand get 1 8 pd get 1 4 get 1 3 get 1 11 get 1 6 get 1 8 nonpolymode pu polymode setcolor rand rand rand get 1 9 pd get 1 5 get 1 4 get 1 7 get 1 6 get 1 9 nonpolymode pu polymode setcolor rand rand rand get 1 10 pd get 1 1 get 1 5 get 1 8 get 1 6 get 1 10 nonpolymode pu polymode setcolor rand rand rand get 1 11 pd get 1 2 get 1 1 get 1 9 get 1 6 get 1 11 nonpolymode pu polymode setcolor rand rand rand get 1 6 pd get 1 7 get 1 3 get 1 2 get 1 10 get 1 6 nonpolymode pu end

■ 大二十面体:松永弘子作 TO dai20mentai :size push pu up 90 fd :size*sin(acos 1/(2*sin 36)) down 90 put 1 0 pop st2 push2 pu2 fd2 :size/(2* sin 36) put 2 1 lt2 126 fd2 :size lt2 72 put 2 2 fd2 :size lt2 72 put 2 3 fd2 :size lt2 72 put 2 4 fd2 :size lt2 72 put 2 5 pop2 down 90 fd :size*(sqrt 6)/6 push fd :size*(sqrt 6)/6 fd :size*sin(acos 1/(2*sin 36)) down 90 put 1 6 down2 90 fd2 :size*(sqrt 6)/6 push2 fd2 :size*(sqrt 6)/6 up2 90 lt2 36 fd2 :size/(2*sin 36) lt2 126 put 2 7 fd2 :size lt2 72 put 2 8 fd2 :size lt2 72 put 2 9 fd2 :size lt2 72 put 2 10 fd2 :size lt2 72 put 2 11 get 2 0 pd2 polymode setcolor rand rand rand get 2 9 get 2 11 get 2 0 nonpolymode pu2 get 2 0 pd2 polymode setcolor rand rand rand get 2 8 get 2 10 get 2 0 nonpolymode pu2 get 2 0 pd2 polymode setcolor rand rand rand get 2 7 get 2 9 get 2 0 nonpolymode pu2 get 2 0 pd2 polymode setcolor rand rand rand get 2 11 get 2 8 get 2 0 nonpolymode pu2 get 2 0 pd2 polymode setcolor rand rand rand get 2 10 get 2 7 get 2 0 nonpolymode pu2 get 2 6 pd2 polymode setcolor rand rand rand get 2 4 get 2 2 get 2 6 nonpolymode pu2 get 2 6 pd2 polymode setcolor rand rand rand get 2 5 get 2 3 get 2 6 nonpolymode pu2 get 2 6 pd2 polymode setcolor rand rand rand get 2 1 get 2 4 get 2 6 nonpolymode pu2 get 2 6 pd2 polymode setcolor rand rand rand get 2 2 get 2 5 get 2 6 nonpolymode pu2 get 2 6 pd2 polymode setcolor rand rand rand get 2 3 get 2 1 get 2 6 nonpolymode pu2 get 2 1 pd2 polymode setcolor rand rand rand get 2 8 get 2 4 get 2 1 nonpolymode pu2 get 2 1 pd2 polymode setcolor rand rand rand get 2 10 get 2 8 get 2 1 nonpolymode pu2 get 2 1 pd2 polymode setcolor rand rand rand get 2 3 get 2 10 get 2 1 nonpolymode pu2 get 2 2 pd2 polymode setcolor rand rand rand get 2 9 get 2 5 get 2 2 nonpolymode pu2 get 2 2 pd2 polymode setcolor rand rand rand get 2 11 get 2 9 get 2 2 nonpolymode pu2 get 2 2 pd2 polymode setcolor rand rand rand get 2 4 get 2 11 get 2 2 nonpolymode pu2 get 2 3 pd2 polymode setcolor rand rand rand get 2 5 get 2 7 get 2 3 nonpolymode pu2 get 2 3 pd2 polymode setcolor rand rand rand get 2 7 get 2 10 get 2 3 nonpolymode pu2 get 2 4 pd2 polymode setcolor rand rand rand get 2 8 get 2 11 get 2 4 nonpolymode pu2 get 2 5 pd2 polymode setcolor rand rand rand get 2 9 get 2 7 get 2 5 nonpolymode pu2 pop pop2 end

KITEに戻る