/** * i_raster上にあるi_vertexの頂点で定義される四角形のパターンから、一致するID値を特定します。 * @param i_vertex * 4頂点の座標 * @param i_raster * @param o_result * @return * @throws NyARException */ public bool identifyId(NyARDoublePoint2d[] i_vertex, INyARRgbRaster i_raster, IdentifyIdResult o_result) { if (this._last_laster != i_raster) { this._gs_pix_reader = NyARGsPixelDriverFactory.createDriver(i_raster); this._last_laster = i_raster; } if (!this._id_pickup.pickFromRaster(this._gs_pix_reader, i_vertex, this._temp_nyid_info, this._temp_nyid_param)) { return(false); } if (!this._rb.Encode(this._temp_nyid_info, this._rb_dest)) { return(false); } //SerialID引きする。 SerialTable.SerialTableRow d = this._table.getItembySerialId(this._rb_dest.marker_id); if (d == null) { return(false); } //戻り値を設定 o_result.marker_width = d.marker_width; o_result.id = this._rb_dest.marker_id; o_result.artk_direction = this._temp_nyid_param.direction; o_result.name = d.name; return(true); }
/** * IDの範囲に対するメタデータセットを、テーブルに追加します。 * この要素にヒットする範囲は,i_st<=n<=i_edになります。 * @param i_name * このID範囲の名前を指定します。不要な場合はnullを指定します。 * @param i_st * ヒット範囲の開始値です。 * @param i_ed * ヒット範囲の終了値です。 * @param i_width * ヒットしたマーカのサイズ値を指定します。 */ public bool addSerialIdRangeItem(String i_name, long i_st, long i_ed, double i_width) { SerialTable.SerialTableRow d = this._table.prePush(); if (d == null) { return(false); } d.setValue(i_name, i_st, i_ed, i_width); return(true); }
/** * 全てのSerialIDにヒットするメタデータセットを、テーブルに追加します。 * @param i_width * ヒットしたマーカのサイズ値です。 * @return * 登録に成功するとtrueです。 */ public bool addAnyItem(String i_name, double i_width) { SerialTable.SerialTableRow d = this._table.prePush(); if (d == null) { return(false); } d.setValue(i_name, 0, long.MaxValue, i_width); return(true); }
/** * i_raster上にあるi_vertexの頂点で定義される四角形のパターンから、一致するID値を特定します。 * @param i_vertex * 4頂点の座標 * @param i_raster * @param o_result * @return * @throws NyARException */ public bool identifyId(NyARDoublePoint2d[] i_vertex, INyARRgbRaster i_raster, IdentifyIdResult o_result) { if (!this._id_pickup.pickFromRaster(i_raster, i_vertex, this._temp_nyid_info, this._temp_nyid_param)) { return(false); } //受け付けられるControlDomainは0のみ if (this._temp_nyid_info.ctrl_domain != 0) { return(false); } //受け入れられるMaskは0のみ if (this._temp_nyid_info.ctrl_mask != 0) { return(false); } //受け入れられるModelは5未満 if (this._temp_nyid_info.model >= 5) { return(false); } this._rb.createDataInstance(); if (!this._rb.encode(this._temp_nyid_info, this._rb_dest)) { return(false); } //SerialIDの再構成 long s = 0; //最大4バイト繋げて1個のint値に変換 for (int i = 0; i < this._rb_dest.length; i++) { s = (s << 8) | (uint)this._rb_dest.packet[i]; } //SerialID引きする。 SerialTable.SerialTableRow d = this._table.getItembySerialId(s); if (d == null) { return(false); } //戻り値を設定 o_result.marker_width = d.marker_width; o_result.id = s; o_result.artk_direction = this._temp_nyid_param.direction; o_result.name = d.name; return(true); }