外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
外部変形の円弧データを考えます。
◎弧・楕円データ
ci %lg %lg %lg %lg %lg %lg %lg ( x y r p1 p2 w d )
x : 中心点の X 方向の座標
y : 中心点の Y 方向の座標
r : 半径
p1 : 始角(゚)
p2 : 終角(゚)
w : 扁平率(0.0001 ~ 10000 程度までが描画できる範囲)
d : 傾角(゚)
・円弧データを指示・選択するときは指示番号や指標が利用できます
①指示番号の円弧データを取り出す
ci 1
ci 1, 2
ci 1..2
ci 1, 2, 3..4
②指標(文字列)で円弧データを代表する
1.ci
[1, 2].ci :index
(1..2).ci
[1, 2, 3..4].index.ci :index
③指標(シンボル)で円弧データを代表する
:ci1
・円弧データは配列、文字列が利用できます
④配列
[1.0, 2.0, 3.0, 30.0, 120.0, 1.0, 0.0]
["ci", 1, 2, 3, 30, 120, 1, 0]
⑤文字列
"1 2 3 30 120 1 0"
"1, 2, 3, 30, 120, 1, 0"
"ci 1 2 3 30 120 1 0"
・配列、文字列の要素にキーワードが利用できます
⑥ハッシュ
(x y r p1 p2 w d)
{x:1, y:2, r:3, p1:30, p2:120, w:1, d:0}
{:x=>1, :y=>2, :r=>3, :p1=>30, :p2=>120, :w=>1, :d=>0}
(C あるいは ci)
{C:[1, 2, 3, 30, 120, 1, 0]}
{:C=>[1, 2, 3, 30, 120, 1, 0]}
⑦キーワード引数
(x y r p1 p2 w d)
ci x:1, y:2, r:3, p1:30, p2:120, w:1, d:0
ci :x=>1, :y=>2, :r=>3, :p1=>30, :p2=>120, :w=>1, :d=>0
(C あるいは ci)
ci C:[1, 2, 3, 30, 120, 1, 0]
ci :C=>[1, 2, 3, 30, 120, 1, 0]
⑧キーワード配列
(x y r p1 p2 w d)
[x:1, y:2, r:3, p1:30, p2:120, w:1, d:0]
[:x=>1, :y=>2, :r=>3, :p1=>30, :p2=>120, :w=>1, :d=>0]
(C あるいは ci)
[C:[1, 2, 3, 30, 120, 1, 0]]
[:C=>[1, 2, 3, 30, 120, 1, 0]]
⑨キーワード文字列
(x y r p1 p2 w d)
"x:1, y:2, r:3, p1:30, p2:120, w:1, d:0"
":x=>1, :y=>2, :r=>3, :p1=>30, :p2=>120, :w=>1, :d=>0"
"x=1, y=2, r=3, p1=30, p2=120, w=1, d=0"
(C あるいは ci)
"C:[1, 2, 3, 30, 120, 1, 0]"
":C=>[1, 2, 3, 30, 120, 1, 0]"
"C=[1, 2, 3, 30, 120, 1, 0]"
ci 1, 2, 3, 4, 5, 6, 7 が 指示円弧 1, 2, 3, 4, 5, 6, 7 なのか [x=1, y=2, r=3, p1=4, p2=5, w=6, d=7] なのかは
p ci as 1, 2, 3, 4, 5, 6, 7 #=> [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], …, [19.0, 20.0, 21.0]]
と
p ci at 1, 2, 3, 4, 5, 6, 7 #=> [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]
のように as と at を使い分けることで解決できます。as は そのまま、at は いちど前に立ち止まって くらいの意味(まちがっているかもしれない)です。
なお ci 1, 2, 3, 30, 120, 1, 0 は 指示円弧の番号は 0~99(0 は 予備) なので 120 があるため 引数は指示番号ではないと判断します。
p ci 1, 2, 3, 30, 120, 1, 0 #=> [1.0, 2.0, 3.0, 30.0, 120.0, 1.0, 0.0]