最終更新日 2004年1月28日
KITE2のサンプルプログラム
例:一般の三角形(その一:三辺の長さを与える)
TO triangle :size1 :size2 :size3
local :a :b :c :angle1 :angle2 :angle3
:a = :size1 / radius * 180 / pi
:b = :size2 / radius * 180 / pi
:c = :size3 / radius * 180 / pi
:angle1 = acos ((cos :a)-(cos :b)*(cos :c))/((sin :b)*(sin :c))
:angle2 = acos ((cos :b)-(cos :a)*(cos :c))/((sin :a)*(sin :c))
:angle3 = acos ((cos :c)-(cos :b)*(cos :a))/((sin :b)*(sin :a))
:angle1 = 180 - :angle1
:angle2 = 180 - :angle2
:angle3 = 180 - :angle3
fd :size1 rt :angle3 fd :size2 rt :angle1 fd :size3 rt :angle2
end

例:一般の三角形(その二:三つの角度を与える)
TO triangle :angle1 :angle2 :angle3
local :a :b :c :side1 :side2 :side3
:a = :angle1
:b = :angle2
:c = :angle3
:side1 = acos ((cos :a)+(cos :b)*(cos :c))/((sin :b)*(sin :c))
:side2 = acos ((cos :b)+(cos :a)*(cos :c))/((sin :a)*(sin :c))
:side3 = acos ((cos :c)+(cos :b)*(cos :a))/((sin :b)*(sin :a))
:side1 = :side1 * pi / 180 * radius
:side2 = :side2 * pi / 180 * radius
:side3 = :side3 * pi / 180 * radius
:angle1 = 180 - :angle1
:angle2 = 180 - :angle2
:angle3 = 180 - :angle3
fd :side3 rt :angle2 fd :side1 rt :angle3 fd :side2 rt :angle1
end

例:正多角形
To poly :size :n
local :side :angle
:side = :size / radius * 180 / pi
:angle = acos sqrt ((cos :side)-(cos 360/:n))/(1+cos :side)
:angle = 180 - 2 * :angle
repeat :n [fd :size rt :angle]
end
poly には一辺の長さと正何角形かを示す数を指定して実行します。たとえば poly 100 5 は一辺100の正五角形を描きます。

例:星形正多角形
To polystar :size :n :m
local :side :angle
:side = :size / radius * 180 / pi
:angle = acos sqrt ((cos :side)-(cos :m*360/:n))/(1+cos :side)
:angle = 180 - 2 * :angle
repeat :n [fd :size rt :angle]
end
polystar は一辺の長さと星形正何角形かを示す数とその星形正多角形の回転数を指定して実行します。たとえば polystar 100 5 2 は一辺100の星形正五角形を描きます。星形正七角形は polystar 100 7 2 と polystar 100 7 3 で描けます。勿論、polystar は poly の拡張ですから poly :size :n と polystar :size :n 1 は同じです。

例:4面角万華鏡
TO tetra
local :short :long
:short = pi*radius*54.7333/180
:long = pi*radius*70.5333/180
hs setlinewidth 5
push
setcolor 1 0 0 fd 2*:short setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long rt 60
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:short rt 60
setcolor 1 0 0 fd 2*:short setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long rt 60
pu fd :long pd rt 60
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:short
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short rt 60
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:short setcolor 1 1 0 fd :long rt 60
pu bk :short pd rt 90
setcolor 1 0 0 fd :short setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd :short rt 90
pu pop
end

例:8面角万華鏡
TO cube
local :short :midle :long
:short = pi*radius*35.2666/180
:midle = pi*radius*45/180
:long = pi*radius*54.7333/180
hs surface 0.7
push
setcolor 1 0 0 fd 2*pi*radius rt 45
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd 2*:long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long rt 45
setcolor 1 0 0 fd 2*pi*radius rt 45
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd 2*:long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long rt 45
pu fd :midle pd rt 90
setcolor 0 0 1 fd :short setcolor 1 1 0 fd 2*:long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd 2*:long
setcolor 0 0 1 fd :short rt 90
pu bk :midle pd rt 45
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd 2*:long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long rt 45
setcolor 1 0 0 fd 2*pi*radius rt 45
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd 2*:long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long rt 45
pu fd :midle pd rt 90
setcolor 0 0 1 fd :short setcolor 1 1 0 fd 2*:long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd 2*:long
setcolor 0 0 1 fd :short
pu pop pd
end

例:20面角万華鏡
TO icosa
local :short :midle :long
:short = pi*radius*20.9/180
:midle = pi*radius*31.7166/180
:long = pi*radius*37.3833/180
hs setlinewidth 5
push
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle rt 36
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long rt 36
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle rt 36
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long rt 36
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle rt 36
pu fd :midle pd rt 90
setcolor 0 0 1 fd :short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd :short rt 90
pu bk :midle pd rt 36
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle rt 36
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long rt 36
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle rt 36
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long rt 36
pu fd :long pd rt 60
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short rt 60
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long rt 60
pu bk :short pd rt 90
setcolor 1 0 0 fd :midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd :midle rt 90
pu fd :short pd rt 60
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long
setcolor 0 0 1 fd 2*:short setcolor 1 1 0 fd :long
setcolor 1 0 0 fd 2*:midle setcolor 1 1 0 fd :long rt 60
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short
setcolor 1 1 0 fd :long setcolor 1 0 0 fd 2*:midle
setcolor 1 1 0 fd :long setcolor 0 0 1 fd 2*:short rt 60
pu pop pd
end

例:球面正四面体
TO tetra
local :size
:size = 2*pi*radius*54.7333/180
hs setlinewidth 5
setcolor 0 1 0 fd :size lt 60
setcolor 1 0 0 fd :size pu bk :size pd rt 120
setcolor 0 0 1 fd :size lt 60
setcolor 0 1 0 fd :size pu bk :size pd rt 120
setcolor 1 0 0 fd :size lt 60
setcolor 0 0 1 fd :size pu bk :size pd rt 120
end

例:球面立方体
TO cube
local :size
:size = 2*pi*radius*35.2666/180
hs setlinewidth 5
push
setcolor 0 0 1 fd :size lt 60
setcolor 0 1 0 fd :size pu bk :size pd rt 120
setcolor 1 0 0 fd :size lt 60
setcolor 0 1 0 fd :size pu bk :size pd rt 120
setcolor 0 0 1 fd :size lt 60
setcolor 1 0 0 fd :size pu bk :size pd rt 120
setcolor 0 1 0 fd :size lt 60
setcolor 1 0 0 fd :size lt 60
setcolor 0 1 0 fd :size rt 60
setcolor 0 0 1 fd :size rt 60
setcolor 1 0 0 fd :size rt 60
setcolor 0 0 1 fd :size
pu pop pd
end

例:球面正八面体
TO octa
local :size
:size = 2*pi*radius*45/180
hs setlinewidth 5
push
setcolor 0 1 0 fd :size
setcolor 1 0 0 fd :size rt 90
setcolor 0 1 0 fd :size rt 90
setcolor 1 1 0 fd :size
setcolor 0 0 1 fd :size
setcolor 0 1 0 fd :size rt 90
setcolor 0 0 1 fd :size rt 90
setcolor 1 1 0 fd :size
setcolor 1 0 0 fd :size
setcolor 0 0 1 fd :size rt 90
setcolor 1 0 0 fd :size rt 90
setcolor 1 1 0 fd :size
pop
end

例:球面正十二面体
TO dodeca
local :size
:size = 2*pi*radius*20.9/180
hs setlinewidth 5
push
setcolor 0 0 1 fd :size lt 60
setcolor 1 0 0 fd :size pu bk :size pd rt 120
setcolor 0 1 0 fd :size lt 60
setcolor 0 0 1 fd :size pu bk :size pd rt 120
setcolor 1 0 0 fd :size lt 60
setcolor 0 0 1 fd :size pu bk :size pd rt 120
setcolor 0 1 0 fd :size lt 60
setcolor 0 0 1 fd :size pu bk :size pd rt 120
setcolor 1 0 0 fd :size lt 60
setcolor 0 1 0 fd :size rt 60
setcolor 1 0 0 fd :size lt 60
setcolor 0 1 0 fd :size pu bk :size pd rt 120
setcolor 0 0 1 fd :size lt 60
setcolor 0 1 0 fd :size lt 60
setcolor 0 0 1 fd :size pu bk :size pd rt 120
setcolor 1 0 0 fd :size lt 60
setcolor 0 1 0 fd :size lt 60
setcolor 0 0 1 fd :size pu bk :size pd rt 120
setcolor 1 0 0 fd :size lt 60
setcolor 0 1 0 fd :size lt 60
setcolor 0 0 1 fd :size pu bk :size pd rt 120
setcolor 1 0 0 fd :size lt 60
setcolor 0 1 0 fd :size lt 60
setcolor 1 0 0 fd :size pu bk :size pd rt 120
setcolor 0 0 1 fd :size lt 60
pu fd :size lt 60 fd :size pd rt 60
setcolor 1 0 0 fd :size lt 60
setcolor 0 1 0 fd :size lt 60
setcolor 1 0 0 fd :size lt 60
setcolor 0 1 0 fd :size lt 60
setcolor 0 0 1 fd :size lt 60
pu pop pd
end

例:球面正二十面体
TO icosa
local :size
:size = 2*pi*radius*31.7166/180
hs setlinewidth 5
push
setcolor 0 0 1 fd :size lt 108
setcolor 0 1 0 fd :size pu bk :size pd rt 72
setcolor 0 0 1 fd :size lt 108
setcolor 1 0 0 fd :size pu bk :size pd rt 72
setcolor 0 0 1 fd :size lt 108
setcolor 0 1 0 fd :size pu bk :size pd rt 72
setcolor 1 0 0 fd :size lt 108
setcolor 0 0 1 fd :size pu bk :size pd rt 72
setcolor 0 1 0 fd :size lt 108
setcolor 1 0 0 fd :size pu bk :size pd rt 72
st2
push2
pu2 rt2 72 fd2 :size lt2 36 pd2
setcolor 0 0 1 fd2 :size rt2 108
setcolor 1 0 0 fd2 :size pu2 bk2 :size pd2 lt2 72
setcolor 0 0 1 fd2 :size rt2 108
setcolor 0 1 0 fd2 :size pu2 bk2 :size pd2 lt2 72
setcolor 0 0 1 fd2 :size rt2 108
setcolor 1 0 0 fd2 :size pu2 bk2 :size pd2 lt2 72
setcolor 0 1 0 fd2 :size rt2 108
setcolor 0 0 1 fd2 :size pu2 bk2 :size pd2 lt2 72
setcolor 1 0 0 fd2 :size rt2 108
setcolor 0 1 0 fd2 :size pu2 bk2 :size pd2 lt2 72
synchro
setcolor 1 0 0 fd :size fd2 0 lt 36
setcolor 0 1 0 fd2 :size rt2 36
setcolor 1 0 0 fd :size fd2 0 lt 36
setcolor 0 1 0 fd2 :size rt2 36
setcolor 1 0 0 fd :size fd2 0 lt 36
setcolor 0 1 0 fd2 :size rt2 36
setcolor 0 0 1 fd :size fd2 0 lt 36
setcolor 1 0 0 fd2 :size rt2 36
setcolor 0 0 1 fd :size fd2 0 lt 36
setcolor 0 1 0 fd2 :size rt2 36
nonsynchro
pu pop pd
pu2 pop2 pd2 ht2
end
