Skip to content
hoge1e3 edited this page Jun 6, 2019 · 6 revisions

api

Matrixクラス

2次元配列を扱うクラスです.縦横の要素数の限度はなく,任意の座標に要素(任意の値,オブジェクト)を格納できます.

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").

プロパティ

  • xmin,xmax,ymin,ymax
    • それぞれ,現在データが格納されている領域のx座標またはy座標の最大値または最小値を返します.
    • データが1つも格納されていない場合,undefinedが返ります.
  • rows, cols
    • データが格納されている領域の高さ,幅を返します.
  • 例:(-5,4)と(5,6)にデータを格納した場合
    • xmin=-5, xmax=5, ymin=4, ymax=6,
    • rows=6-4+1=3, cols=5-(-5)+1=11
  • neighborDirs
    • neighbors メソッドにおいて,隣接領域のデフォルトの数(4または8)を指定します.

メソッド

  • set(x,y,d)
    • (x,y)の位置にデータdを格納します.
  • get(x,y)
    • (x,y)の位置に格納されているデータを読み出します.格納されていない場合はundefinedを返します.
  • load(csvfile)
    • csvファイルからデータを読み込みます.
  • search(value)
    • 指定された値がある場所をオブジェクト{x,y}で返します.
  • cross(rowValue,colValue)
    • rowValueで指定された値がある行,colValueで指定された値がある列が交わる箇所の値を返します.
  • crop(params)
    • 指定した領域のデータだけを切り出した新しいMatrixオブジェクトを返します.
    • params には,left,top,right,bottom,width,height,keepXY を属性にもつオブジェクトを渡します(一部省略可能)
      • left, top: 切り出す位置の左上の座標(必須)
      • right, bottom: 切り出す位置の右下の座標(width,heightを指定した場合は省略)
      • width, height: 切り出す領域の幅と高さ(right,bottomを指定した場合は省略)
      • keepXY: trueを指定した場合,切り出したあとの新しいMatrixオブジェクトをにおいて,各データのある座標をこのMatrixオブジェクトと同じ座標にする.falseを指定したり省略したりした場合,切り出した範囲の左上(left,top)にあるデータは,新しいMatrixオブジェクトにおいては(0,0)の位置に配置され,他のデータの座標もそれに準じてずれる.
  • neighbors(x,y,options)
    • このMatrixオブジェクトの指定された位置(x,y)を中心とし,それに隣接する要素の座標とデータを配列で返します.
    • options には次を指定できます
      • dirs 隣接する領域の数.4または8を指定.4を指定した場合,上下左右のみを隣接するとみなし,8の場合は斜めも含めて隣接するとみなす.省略した場合はneighborDirsを用いる.
      • includeEmpty trueを指定した場合,データのない要素も含めて結果に返す(valueundefinedになる)
    • 戻り値は,隣接する要素をあわらす次のオブジェクトの配列になります
      • {x:x座標, y:y座標, ox:中心からの変位のx座標, oy:中心からの変位のy座標, value:データ }
  • keysIterator()
    • データのある点のみを走査するイテレータです.次のfor...in の節参照.
  • rectIterator()
    • データのある領域を囲う四角形の領域を走査するイテレータです.次のfor...in の節参照.

イベント

  • "change"
    • 値が書き込まれたときに呼び出されます.
      • ※すでに書き込まれているものと同じ値が書き込まれた場合は呼び出されません
    • 呼び出されるときに{x: 横位置, y: 縦位置, value:書き込まれた値 }を オブジェクトにして渡します.

for ... in

次のようにすると,データが格納されている領域を囲う四角形の領域を繰り返します.

// 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にデータ
}
Clone this wiki locally