2次元配列を扱うクラスです.縦横の要素数の限度はなく,任意の座標に要素(任意の値,オブジェクト)を格納できます.
Main
m=new Matrix;
m.set(3,5,"test");
print(m.get(3,5)); // test
m.set(4,6,{name:"tonyu"});
print(m.get(4,6).name);// tonyu
new Matrix
空のMatrixを作成します.
new Matrix(data)
指定されたデータをもつMatrixを作成します.data
にはオブジェクトを指定します.キーには横座標,縦座標をあらわす数値をカンマで区切った文字列を与えます(例:"12,34"
).
undefined
が返ります.undefined
を返します.left, top
: 切り出す位置の左上の座標(必須)right, bottom
: 切り出す位置の右下の座標(width,height
を指定した場合は省略)width, height
: 切り出す領域の幅と高さ(right,bottom
を指定した場合は省略)keepXY
: trueを指定した場合,切り出したあとの新しいMatrixオブジェクトをにおいて,各データのある座標をこのMatrixオブジェクトと同じ座標にする.falseを指定したり省略したりした場合,切り出した範囲の左上(left,top)にあるデータは,新しいMatrixオブジェクトにおいては(0,0)の位置に配置され,他のデータの座標もそれに準じてずれる.options
には次を指定できますdirs
隣接する領域の数.4または8を指定.4を指定した場合,上下左右のみを隣接するとみなし,8の場合は斜めも含めて隣接するとみなす.省略した場合はneighborDirsを用いる.includeEmpty
trueを指定した場合,データのない要素も含めて結果に返す(value
はundefined
になる){x:x座標, y:y座標, ox:中心からの変位のx座標, oy:中心からの変位のy座標, value:データ }
{x: 横位置, y: 縦位置, value:書き込まれた値 }
をオブジェクトにして渡します.get(x,y)
で読み出したときに,値がundefined
(未設定)の場合に呼び出されます.{x: 横位置, y: 縦位置, set:書き込む値を引数に渡して,(x,y)に書き込む関数 }
をオブジェクトにして渡します.次のようにすると,データが格納されている領域を囲う四角形の領域を繰り返します.
// mはMatrixクラスのオブジェクト
for (x,y,d in m) {
// xmin<=x<=xmax, ymin<=y<=ymax をみたすすべての座標について繰り返す
// x,y に座標, dにデータ(格納されていない場所ではundefined)
}
データのない点を繰り返したくない場合は,次のようにkeysIteratorを使います.
// mはMatrixクラスのオブジェクト
for (x,y,d in m.keysIterator()) {
// x,y に座標, dにデータ
}