public class NyARDistMap
extends java.lang.Object
アルゴリズム - 2つの点集合の総当たりの距離マップを作り、その距離が小さいのものから順に抽出することで、 其々の点の移動距離が最小になる組み合わせを計算します。
使い方 - このクラスは、まず距離マップを作るために距離値をセットして、次に組み合わせを得る手順で使います。 距離マップには行と列があります。列を基準値、行を比較値として、その距離値を格納します。 行と列の距離マップを作り終えたら、組合せを計算します。
setMapSize(int, int)
関数で、マップサイズ(比較する頂点数)を設定する。
setDist(int, int, int)
,またはsetPointDists(jp.nyatla.nyartoolkit.core.types.NyARIntPoint2d[], int, jp.nyatla.nyartoolkit.core.types.NyARIntPoint2d[], int)
で、距離マップに全ての値を書き込む。
コンストラクタと説明 |
---|
NyARDistMap(int i_max_col,
int i_max_row)
コンストラクタです。
|
修飾子とタイプ | メソッドと説明 |
---|---|
void |
getMinimumPair(int[] o_rowindex)
この関数は、現在の距離マップから、col要素に対するrow要素の組合せを計算します。
|
void |
setDist(int i_col,
int i_row,
int i_dist)
この関数は、列と行を指定して、距離値1個をマップにセットします。
|
void |
setMapSize(int i_col,
int i_row)
この関数は、マップのサイズを指定します。
|
void |
setPointDists(NyARIntPoint2d[] i_vertex_r,
int i_row_len,
NyARIntPoint2d[] i_vertex_c,
int i_col_len)
この関数は、2つの座標点配列同士の距離値を一括してマップにセットします。
|
public NyARDistMap(int i_max_col, int i_max_row)
i_max_col
- マップの最大列数i_max_row
- マップの最大行数public void setMapSize(int i_col, int i_row)
i_col
- 新しい列数。i_row
- 新しい行数。public void setDist(int i_col, int i_row, int i_dist)
注意 -
このAPIは低速です。性能が必要な時は、setPointDists(jp.nyatla.nyartoolkit.core.types.NyARIntPoint2d[], int, jp.nyatla.nyartoolkit.core.types.NyARIntPoint2d[], int)
を参考に、一括書込みする関数を検討してください。
i_col
- 列のインデクスを指定します。i_row
- 行のインデクスを指定します。i_dist
- その行と列の距離値を指定します。public void setPointDists(NyARIntPoint2d[] i_vertex_r, int i_row_len, NyARIntPoint2d[] i_vertex_c, int i_col_len)
実装メモ - 点のフォーマットが合わない場合は、この関数参考にオーバーロードしてください。
i_vertex_r
- 比較する頂点群を格納した配列。i_row_len
- i_vertex_rの有効な要素数i_vertex_c
- 基準となる頂点群を格納した配列i_col_len
- i_vertex_cの有効な要素数public void getMinimumPair(int[] o_rowindex)
o_rowindex
- 組合せを受け取る配列です。
col[n]に対するrow[m]のインデクス番号mを、o_rowindex[n]に返します。