-
Notifications
You must be signed in to change notification settings - Fork 4
class Array
Daisuke YAMAGUCHI edited this page Nov 25, 2015
·
9 revisions
siren では、 Ruby の組み込みクラス Array (配列)クラスを用いて、3次元座標値の集合(XYZ値)として扱います。そのため、通常の Array クラスを拡張したいくつかのメソッドが準備されています。ここでは、 siren 独自の追加機能のみを掲載しています。
-
x -> Float, x=(value)- X の値を取得、設定します。 X の値は配列の第0要素に格納されます。第0要素がない、もしくは非数値だった場合、メソッドは
0.0を返します。
- X の値を取得、設定します。 X の値は配列の第0要素に格納されます。第0要素がない、もしくは非数値だった場合、メソッドは
-
y -> Float, y=(value)- Y の値を取得、設定します。 Y の値は配列の第1要素に格納されます。第1要素がない、もしくは非数値だった場合、メソッドは
0.0を返します。
- Y の値を取得、設定します。 Y の値は配列の第1要素に格納されます。第1要素がない、もしくは非数値だった場合、メソッドは
-
z -> Float, z=(value)- Z の値を取得、設定します。 Z の値は配列の第2要素に格納されます。第2要素がない、もしくは非数値だった場合、メソッドは
0.0を返します。
- Z の値を取得、設定します。 Z の値は配列の第2要素に格納されます。第2要素がない、もしくは非数値だった場合、メソッドは
-
to_v -> Vec- X, Y, Z の値を用い、それらの要素を持つ Vec 型を生成します。
-
dist(other) -> Float- Vec 型の other との2点間距離を取得します。
siren における3次元座標値、ベクトル値を引数に取るメソッドのほとんどは、この Array 型を受け取ります。X, Y, Z のそれぞれの要素は省略が可能で、省略すると値は0とみなされます。この挙動は、次のコード例を参考にしてください。
# X, Y, Z の値は要素の最初から順に使われ、値が省略されたら 0 と解釈される
[].x
=> 0
[1].x
=> 1
[1].y
=> 0
[1, 2].y
=> 2
# これにより、例えば原点を表す [0, 0, 0] は次の空の Array に等しい
[]
# x, y, z メソッド経由で要素にアクセスした場合、中身に関わらず Float 型となる。
[10, 20, 30].x.class
=> Float
# 値が省略されたら 0 と解釈される
myvec = [10, 20].to_v
=> #<Vec:0x000000 @x=10.000000, @y=20.000000, @z=0.000000>
myvec = [10].to_v
=> #<Vec:0x000000 @x=10.000000, @y=0.000000, @z=0.000000>
myvec = [].to_v
=> #<Vec:0x000000 @x=0.000000, @y=0.000000, @z=0.000000>
# 要素数が多い場合、先頭の3要素が用いられる
myvec = [10, 20, 30, 40, 50].to_v
=> #<Vec:0x000000 @x=10.000000, @y=20.000000, @z=30.000000>