] kite3

最終更新日 2004年1月20日

三次元ポアンカレ球体モデル双曲空間LOGO : KITE3のマニュアル
基本的な使い方は空間LOGOと面が描けないことを除けば同じです。
■ 手続きには次のものがあります。
● fd 数式 または forward 数式
 タートル1 が数式の値だけ前進する。 距離は双曲距離です。 例: fd 3
● fd2 数式 または forward2 数式
 タートル2 が数式の値だけ前進する。 距離は双曲距離です。 例: fd2 3
● bk 数式 または back 数式
 タートル1 が数式の値だけ後退する。 距離は双曲距離です。 例: bk 3
● bk2 数式 または back2 数式
 タートル2 が数式の値だけ後退する。 距離は双曲距離です。 例: bk2 3
● pd または pendown
 タートル1 のペンを下げる。以後、移動すれば、線を描く。初期設定は pd の状態です。
● pd2 または pendown2
 タートル2 のペンを下げる。以後、移動すれば、線を描く。初期設定は pd2 の状態です。
● pu または penup
 タートル1 のペンを上げる。以後、移動しても、線を描かない。初期設定は pd の状態です。
● pu2 または penup2
 タートル2 のペンを上げる。以後、移動しても、線を描かない。初期設定は pd2 の状態です。
● lt 数式 または left 数式
 タートル1 が数式の値だけ左向きに方向を変える。単位は度です。
● lt2 数式 または left2 数式
 タートル2 が数式の値だけ左向きに方向を変える。単位は度です。
● rt 数式 または right 数式
 タートル1 が数式の値だけ右向きに方向を変える。単位は度です。
● rt2 数式 または right2 数式
 タートル2 が数式の値だけ右向きに方向を変える。単位は度です。
● roll 数式
 タートル1 が数式の値だけ左右に方向を変える。正が左、負が右です。単位は度です。
● roll2 数式
 タートル2 が数式の値だけ左右に方向を変える。正が左、負が右です。単位は度です。
● up 数式
 タートル1 が数式の値だけ上向きに方向を変える。単位は度です。
● up2 数式
 タートル2 が数式の値だけ上向きに方向を変える。単位は度です。
● down 数式
 タートル1 が数式の値だけ下向きに方向を変える。単位は度です。
● down2 数式
 タートル2 が数式の値だけ下向きに方向を変える。単位は度です。
● pitch 数式
 タートル1 が数式の値だけ上下に方向を変える。正が上、負が下です。単位は度です。
● pitch2 数式
 タートル2 が数式の値だけ上下に方向を変える。正が上、負が下です。単位は度です。
● yaw 数式
 タートル1 が数式の値だけ左右に姿勢を傾ける。正が右、負が左です。単位は度です。
● yaw2 数式
 タートル2 が数式の値だけ左右に姿勢を傾ける。正が右、負が左です。単位は度です。
● cs または clearscreen
 絵を消し、初期状態に戻す。スタックも空になります。
● repaint
 絵を再描画する。画面の大きさを変えた時や画面が消えた時に使います。
● print 数式
 数式の値を右側のメモに表示します。
● 変数名 = 数式
 変数に数式の値を代入します。変数名は先頭に : のある英数字です。local と共に宣言された変数でなければ、グローバル変数です。変数の値は変数名で得ることができます。
 例:
:X = 30 print sin :X
0.5 が表示されます。
● listing
 ユーザ定義の手続きと関数の名前を左のメモに表示します。
● randomize
 乱数を初期化します。
● stop
 ユーザ定義手続きの中で使い、stop を実行すれば、その手続きを終了します。
● op 数式
 ユーザ定義関数の中で使い、op 数式 を実行すれば、その数式の値を関数の値として関数を終了します。
● local 変数名の並び
 ユーザ定義の手続きと関数の中でローカル変数を定義するのに使います。0 で初期化されます。
 例:
TO F :X
  LOCAL :A 
  :A = :X PRINT :A
END
と手続き F を定義したとき、コマンドラインで :A = 10 F 5 PRINT :A を実行すると 5, 10 と表示する。ローカル変数とグローバル変数と両方あるときはローカル変数が優先される。ローカル変数の値を変えても、グローバル変数の値は変化しない。
注意:ローカル変数の宣言は一行にして下さい。local :x :y のように複数のローカル変数を一度に宣言できるので、上の手続きの定義を
TO F :X
  LOCAL :A :A = :X PRINT :A
END
と定義するとプログラムが混乱して、エラーになります。
例:
TO G :X
  :A = :X PRINT :A
END
と手続き G を定義したとき、コマンドラインで :A = 10 G 5 PRINT :A を実行すると 5, 5 と表示する。グローバル変数の値は手続きまたは関数で値を変えれば、手続きまたは関数から戻ってもその値に変化している。
● st または showturtle
 タートル1 を表示します。初期設定はタートルを表示します。
● st2 または showturtle2
 タートル2 を表示します。初期設定はタートルを表示しません。
● ht または hideturtle
 タートル1 を表示しません。初期設定はタートルを表示します。
● ht2 または hideturtle2
 タートル2 を表示しません。初期設定はタートルを表示しません。
● og 数式 または orthogonal 数式
 正射影で表示します。数式の値が画面の横の大きさです。初期設定は正射影で、数値は300で表示します。
● pg 数式 または perspective 数式
 透視投影で表示します。数式の値は視野角です。pg 45 とか pg 30 とか指定します。
● setcolor 数式1 数式2 数式3
 描く線の色を指定します。数式1 が赤、数式2 が緑、数式3 が青の割合で、0 から 1 の範囲で指定します。setcolor 1 1 1 は白です。初期設定は 1 1 0 で黄色です。
● setbackcolor 数式1 数式2 数式3
 画面の背景の色を指定します。数式1 が赤、数式2 が緑、数式3 が青の割合で、0 から 1 の範囲で指定します。setbackcolor 1 1 1 は白です。初期設定は 0 0 0 で黒です。この命令は画面を紙に印刷したい時に使います。初期設定のままでは、黒い画面に黄色で線が描かれているので、特別な意図がある場合以外は、背景を白にしたほうが良いと思います。そのときはペンの色も上の setcolor 命令で黒などにした方が良いと思います。
● setlinewidth 数式
 描く線の幅を指定します。1が一番小さくです。
● setpos 数式1 数式2 数式3
 タートル1 が数式1 数式2 数式3で示される位置にタートル1 が移動します。座標系はユークリッド座標です。
● setpos2 数式1 数式2 数式3
 タートル2 が数式1 数式2 数式3で示される位置にタートル2 が移動します。座標系はユークリッド座標です。
● setx 数式
 タートル1 の X 座標が数式の値に変化した位置にタートル1 が移動します。座標系はユークリッド座標です。
● setx2 数式
 タートル2 の X 座標が数式の値に変化した位置にタートル2 が移動します。座標系はユークリッド座標です。
● sety 数式
 タートル1 の Y 座標が数式の値に変化した位置にタートル1 が移動します。座標系はユークリッド座標です。
● sety2 数式
 タートル2 の Y 座標が数式の値に変化した位置にタートル2 が移動します。座標系はユークリッド座標です。
● setz 数式
 タートル1 の Z 座標が数式の値に変化した位置にタートル1 が移動します。座標系はユークリッド座標です。
● setz2 数式
 タートル2 の Z 座標が数式の値に変化した位置にタートル2 が移動します。座標系はユークリッド座標です。
● toward 数式1 数式2 数式3
 数式1 数式2 数式3で示される位置を向くようにタートル1 が向きを変えます。座標系はユークリッド座標です。
● toward2
 タートル1のいる位置を向くようにタートル2 が向きを変えます。
● push
 タートル1 の状態をタートル1 用のスタックにプッシュします。スタックの大きさは100個ぶんです。
● push2
 タートル2 の状態をタートル2 用のスタックにプッシュします。スタックの大きさは100個ぶんです。
● pop
 タートル1 用のスタックから保存していた状態をタートル1 に戻します。
● pop2
 タートル2 用のスタックから保存していた状態をタートル2 に戻します。
例:push と pop は組にして、例えば、
TO triangle :side1 :side2
  push fd :side1 rt 90 fd :side2 pop
end
と定義すれば、斜辺でない二辺が :side1 と :side2 である直角三角形を描くプログラムを定義することが出来ます。triangle 1 2 を実行すれば、辺の長さが 1, 2, ? である直角三角形を描くことが出来ます。しかもこの場合、タートルは描き始める時と描き終わった時とで同じ状態です。
● put 数式1 数式2
 タートルの現在の情報を大域配列に保存します。数式1が1の時はタートル1の情報を、数式が2の時はタートル2の情報を保存します。数式2で保存する配列の位置を指定します。0以上1000未満の数値が使えます。
● get 数式1 数式2
 大域配列に保存しているタートルの情報を取り出し、タートルの現在の情報とします。数式1が1の時はタートル1の情報を、数式が2の時はタートル2の情報を取り出します。数式2で取り出す配列の位置を指定します。0以上1000未満の数値が使えます。 ● pa 数式1 数式2 または putarray 数式1 数式2
 大域配列の数式1で指定される位置に数式2の値を保存します。大域配列の範囲は0以上2000です。 ● line 数式1 数式2 数式3 数式4 数式5 数式6
(数式1, 数式2, 数式3) で示される点と(数式4, 数式5, 数式6) で示される点を結ぶ線分を描きます。 座標系はユークリッド座標です。
● fullline 数式1 数式2 数式3 数式4 数式5 数式6
(数式1, 数式2, 数式3) で示される点と(数式4, 数式5, 数式6) で示される点を結ぶ双曲線分を描きます。 座標系はユークリッド座標です。
● synchro
シンクロ状態になります。タートル2 が移動した時、両方のタートルが PD ならば二匹のタートル間に線が引かれます。
● nonsynchro
 シンクロ状態を抜けます。両方のタートルが独立に動きます。初期状態はシンクロ状態ではありません。
● sleep 数式
 数式の値ミリ秒だけ休止します。
● to 手続き名
 自前の手続きを定義するのに使います。TO 手続き名 をコマンドラインで実行すると手続きや関数を定義する為のダイアログボックスが開きます。 ダイアログボックスのメモの一行目に TO 手続き名 と書いてあります。この一行目も使って、手続きを定義します。
● to 関数名
 自前の関数を定義するのに使います。TO 関数名 をコマンドラインで実行すると手続きや関数を定義する為のダイアログボックスが開きます。 ダイアログボックスのメモの一行目に TO 関数名 と書いてあります。この一行目も使って、関数を定義します。
■ 制御構造には次のものがあります。
● repeat 数式 [ 手続きの並び ]
 数式の値だけ手続きの並びを繰り返し実行します。
● while 条件式 [ 手続きの並び ]
 条件式が正しい間手続きの並びを繰り返し実行します。
● do [ 手続きの並び ] until 条件式
 まず手続きの並びを一回実行し、以下条件式が正しくない間手続きの並びを繰り返し実行します。
● for 変数名 = 数式 to 数式 step 数式 [ 手続きの並び ]
 まず変数を最初の数式の値で初期化し、二番目の数式の値を超えるまで三番目の数式の値を手続きの並びを実行するたびに加え、手続きの並びを繰り返し実行します。
step 数式の部分を省略すると増分は 1 になります。
● for 変数名 = 数式 downto 数式 step 数式 [ 手続きの並び ]
 まず変数を最初の数式の値で初期化し、二番目の数式の値を下回るまで三番目の数式の値を手続きの並びを実行するたびに減じ、手続きの並びを繰り返し実行します。
step 数式の部分を省略すると減分は 1 になります。
● continue
 repeat 文、while 文, do until 文, for 文の中で使われ、continue 文以下を省略して、次の繰り返しを実行する。for 文では、増分または減分が行われる。
 例:
for :i=0 to 10 [if :i % 2 == 0 [continue] print :i]
 1, 3, 5, 7, 9 と表示する。
● break
 repeat 文、while 文, do until 文, for 文の中で使われ、break 文を実行すれば、ループを抜け出す。
 例:
for :i=1 to 10 [if :i % 4 == 0 [break] print :i]
 1, 2, 3 と表示する。
● if 条件式 [ 手続きの並び ]
 条件式が真であれば、手続きの並びを実行します。 if 文が複数行になるときには、
if 条件式 [
  手続きの並び
]
のように最初の[は条件式の後に(同じ行に)続けて下さい。そのうち直しますが、今はこれが仕様だと思って下さい。この方がプログラムが見やすいですから。
● if 条件式 [ 手続きの並び ] [ 手続きの並び ]
 条件式が真であれば、最初の手続きの並びを実行し、偽であれば、二番目の手続きの並びを実行します。if 文が複数行になるときには、
if 条件式 [
  手続きの並び
][
  手続きの並び
]
のように最初の[は条件式の後に(同じ行に)続け、二番目の[は最初の[と同じ行に続けて下さい。そのうち直しますが、今はこれが仕様だと思って下さい。この方がプログラムが見やすいですから。
● これらの制御構造は好きなだけネストできます。
 例:
for :i = 1 to 3 [
  for :j = 1 to 3 [
    print :i * :j
  ]
]
 1, 2, 3, 2, 4, 6, 3, 6, 9 と表示する。
条件式は次のようにして作ります。
■ 関係演算子には次のようなものがあります。
● 数式1 == 数式2
 == の両辺の値が等しければ真、そうでなければ偽です。
● 数式1 != 数式2
 != の両辺の値が等しくなければ真、そうでなければ偽です。
● 数式1 > 数式2
 数式1 の値が数式2 の値より大きければ真、そうでなければ偽です。
● 数式1 < 数式2
 数式1 の値が数式2 の値より小さければ真、そうでなければ偽です。
● 数式1 >= 数式2
 数式1 の値が数式2 の値より大きいか等しければ真、そうでなければ偽です。
● 数式1 <= 数式2
 数式1 の値が数式2 の値より小さいか等しければ真、そうでなければ偽です。
■ 論理演算子には次のようなものがあります。
● (条件式1) && (条件式2)
 条件式1 と条件式2 の論理積を取ります。優先順位は *, /, % と同じです。
● (条件式1) || (条件式2)
 条件式1 と条件式2 の論理和を取ります。優先順位は二項演算子 +, - と同じです。
● !(条件式)
 条件式の論理否定を取ります。優先順位は単項演算子 +, - と同じです。
■ 算術演算子には次のようなものがあります。
● + 数式
 単項演算子 + です。あってもなくても同じです。
● - 数式
 単項演算子 - です。数式の値に -1 を掛ける。
● 数式1 * 数式2
 数式1 の値と数式2 の値の積がその値となる。二項演算子 * です。優先順位は /, %, && と同じです。二項演算子 +, - より優先されます。
● 数式1 / 数式2
 数式1 の値と数式2 の値の商がその値となる。二項演算子 / です。優先順位は *, %, && と同じです。二項演算子 +, - より優先されます。
● 数式1 % 数式2
 数式1 の整数値を数式2 の整数値で割った余りがその値となる。二項演算子 % です。優先順位は *, /, && と同じです。二項演算子 +, - より優先されます。
● 数式1 + 数式2
 数式1 の値と数式2 の値の和がその値となる。二項演算子 + です。優先順位は二項演算子 -, || と同じです。二項演算子 *, /, %, && の方が優先されます。
● 数式1 - 数式2
 数式1 の値と数式2 の値の差がその値となる。二項演算子 - です。優先順位は二項演算子 +, || と同じです。二項演算子 *, /, %, && の方が優先されます。
 例:
2 * 3 - 5 と 2 * (3 - 5)
 1 と -4 です。
● ( と )
 ( と ) を使うことで演算子の優先順序を変更できます。
■ 組み込み関数として次のものが使えます。
● sin 数式
 三角関数の sin です。() は必要ありません。単位は度です。
● cos 数式
 三角関数の cos です。() は必要ありません。単位は度です。
● tan 数式
 三角関数の tan です。() は必要ありません。単位は度です。
● asin 数式
 逆三角関数の arcsin です。() は必要ありません。度で返されます。
● acos 数式
 逆三角関数の arccos です。() は必要ありません。度で返されます。 ● atan 数式
 逆三角関数の arctan です。() は必要ありません。度で返されます。
● atan2 数式1 数式2
 逆三角関数の arctan(数式1 の値 / 数式2 の値) です。() は必要ありません。度で返されます。
● pow 数式1 数式2
 数式1 の値の数式2 の値乗です。() は必要ありません。
● log 数式
 対数関数の log です。() は必要ありません。底は e です。
● exp 数式
 指数関数の exp です。() は必要ありません。底は e です。
● cosh 数式
 ハイパボリック・コサインの cosh です。() は必要ありません。
● sinh 数式
 ハイパボリック・サインの sinh です。() は必要ありません。
● tanh 数式
 ハイパボリック・タンジェントの tanh です。() は必要ありません。
● acosh 数式
 アークハイパボリック・コサインの arccosh です。() は必要ありません。値は正の値を返します。
● asinh 数式
 アークハイパボリック・サインの arcsinh です。() は必要ありません。
● atanh 数式
 アークハイパボリック・タンジェントの arctanh です。() は必要ありません。
● sqrt 数式
 数式の値の平方根を返します。() は必要ありません。
● abs 数式
 数式の値の絶対値を返します。() は必要ありません。
● floor 数式
 数式の値以下の最大の整数値を返します。() は必要ありません。
● ceil 数式
 数式の値以上の最小の整数値を返します。() は必要ありません。
● quotient 数式1 数式2
 数式1 の値を整数値に切り捨てたものを数式2 の値を整数値に切り捨てたもので割った商です。() は必要ありません。
● random 数式
 0 から 数式の値 - 1 までの整数値の乱数を返します。() は必要ありません。
● rand
 0 から 1 の実数値の乱数を返します。
● contained 数式1 数式2
 現在のタートルの状態が大域配列の数式1以上数式2未満の範囲に保存されていれば真を、そうでなければ偽を返します。 ● ga 数式 または getarray 数式
 大域配列の数式の値の位置に保存されている値を返します。配列の範囲は0以上2000未満です。 ● pi
 円周率の値を返します。
● tx
 タートル1 の X 座標を返します。座標系はユークリッド座標系です。
● tx2
 タートル2 の X 座標を返します。 座標系はユークリッド座標系です。
● ty
 タートル1 の Y 座標を返します。 座標系はユークリッド座標系です。
● ty2
 タートル2 の Y 座標を返します。 座標系はユークリッド座標系です。
● tz
 タートル1 の Z 座標を返します。 座標系はユークリッド座標系です。
● tz2
 タートル2 の Z 座標を返します。 座標系はユークリッド座標系です。
● distance 数式1 数式2 数式3
 タートル1 と数式1 数式2 数式3 で示される位置の間の距離を返します。座標系はユークリッド座標系です。
● distance2
 タートル2 とタートル1 の間の距離を返します。
● linewidth
 線の幅を返します。
■ 定数は数字の並び(例: 123)や数字の並び.数字の並び(例:2.15)や数字の並び E (+/-) 数字の並び(例:12E-20、2E3) や数字の並び.数字の並び E(+/-) 数字の並び(例:1.23E10, 2.0e-2)です。
■ 数式や条件式は定数、変数、関数を零個以上の演算子で組み合わせて作ります。真理値の偽は 0 真は 0 以外の数で実際は機能します。

KITE3に戻る