OSDN Git Service

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit/trunk@786 7cac0...
[nyartoolkit-and/nyartoolkit-and.git] / lib / src.rpf / jp / nyatla / nyartoolkit / rpf / mklib / ARTKMarkerTable.java
index a94273b..e840e98 100644 (file)
@@ -2,43 +2,46 @@ package jp.nyatla.nyartoolkit.rpf.mklib;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.NyARCode;\r
-import jp.nyatla.nyartoolkit.core.match.NyARMatchPattDeviationColorData;\r
-import jp.nyatla.nyartoolkit.core.match.NyARMatchPattResult;\r
-import jp.nyatla.nyartoolkit.core.match.NyARMatchPatt_Color_WITHOUT_PCA;\r
+import jp.nyatla.nyartoolkit.core.match.*;\r
 import jp.nyatla.nyartoolkit.core.raster.rgb.NyARRgbRaster;\r
 import jp.nyatla.nyartoolkit.core.rasterreader.NyARPerspectiveRasterReader;\r
 import jp.nyatla.nyartoolkit.core.types.NyARBufferType;\r
 import jp.nyatla.nyartoolkit.core.types.stack.NyARObjectStack;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARRealityTarget;\r
-import jp.nyatla.nyartoolkit.rpf.realitysource.nyartk.NyARRealitySource;\r
+import jp.nyatla.nyartoolkit.rpf.reality.nyartk.*;\r
+import jp.nyatla.nyartoolkit.rpf.realitysource.nyartk.*;\r
 \r
 /**\r
- * 簡易なARToolKitパターンテーブルです。\r
- * このクラスは、ARToolKitスタイルのパターンファイルとIdとメタデータセットテーブルを定義します。\r
+ * このクラスは、ARToolKitマーカパターンのテーブルです。\r
+ * マーカパターンをID番号やメタデータに変換する事に役立ちます。\r
+ * テーブルには、ARToolKitフォーマットのマーカパターンと、ID番号、ユーザ定義のデータのセットを格納します。\r
+ * このクラスは、テーブルの操作機能と、テーブル要素の検索機能を提供します。\r
  */\r
 public class ARTKMarkerTable\r
 {\r
        /**\r
-        * selectTarget関数の戻り値を格納します。\r
+        * 結果型です。{@link ARTKMarkerTable#getBestMatchTarget}関数の戻り値を格納します。\r
+        * <p>memo-\r
         * 入れ子クラスの作れない処理系では、ARTKMarkerTable_GetBestMatchTargetResultとして宣言してください。\r
+        * </p>\r
         */\r
        public static class GetBestMatchTargetResult\r
        {\r
-               /** 登録時に設定したIDです。*/\r
+               /** 登録時に設定したIDです。*/\r
                public int idtag;\r
-               /** 登録時に設定した名前です。*/\r
+               /** 登録時に設定した名前文字列です。*/\r
                public String name;\r
-               /** 登録時に設定したマーカサイズです。*/\r
+               /** 登録時に設定したマーカ幅です。単位は、mm単位です。*/\r
                public double marker_width;\r
-               /** 登録時に設定したマーカサイズです。*/\r
+               /** 登録時に設定したマーカ高さです。単位は、mm単位です。*/\r
                public double marker_height;\r
-               /** ARToolKit準拠の、マーカの方位値*/\r
+               /** ARToolKit準拠の、マーカの方位値です。0&lt;=n&lt;=3の値が入ります。*/\r
                public int artk_direction;\r
-               /** 一致率*/\r
+               /** パターンの一致率です。0<&lt;n&lt;=1.0の数値が入ります。*/\r
                public double confidence;\r
        }\r
-       \r
-\r
+       /**\r
+        * データを格納するリストクラスを定義します。\r
+        */\r
        private class MarkerTable extends NyARObjectStack<MarkerTable.SerialTableRow>\r
        {\r
                public class SerialTableRow\r
@@ -75,22 +78,30 @@ public class ARTKMarkerTable
        private NyARMatchPatt_Color_WITHOUT_PCA _match_patt;\r
        private NyARMatchPattDeviationColorData _deviation_data;\r
        private MarkerTable _table;\r
+       \r
+       /** ワーク変数*/\r
+       private NyARMatchPattResult __tmp_patt_result=new NyARMatchPattResult();\r
+       \r
+       \r
        /**\r
-        * コンストラクタです。\r
+        * コンストラクタです。引数にあるパラメータで、空のテーブルを作ります。\r
         * @param i_max\r
         * 登録するアイテムの最大数です。\r
         * @param i_resolution_x\r
-        * 登録するパターンの解像度です。\r
+        * 登録するパターンの解像度です。\r
         * ARToolKit互換の標準値は16です。\r
         * @param i_resolution_y\r
-        * 登録するパターンの解像度です。\r
+        * 登録するパターンの解像度です。\r
         * ARToolKit互換の標準値は16です。\r
         * @param i_edge_x\r
-        * エッジ部分の割合です。ARToolKit互換の標準値は25です。\r
+        * エッジ部分の割合です。0<n<100の数値を指定します。\r
+        * ARToolKit互換の標準値は25です。\r
         * @param i_edge_y\r
-        * エッジ部分の割合です。ARToolKit互換の標準値は25です。\r
+        * エッジ部分の割合です。0<n<100の数値を指定します。\r
+        * ARToolKit互換の標準値は25です。\r
         * @param i_sample_per_pix\r
-        * パターン取得の1ピクセルあたりのサンプリング数です。1なら1Pixel=1,2なら1Pixel=4のサンプリングをします。\r
+        * 元画像からパターンを取得する時の、1ピクセル当たりのサンプリング数です。\r
+        * 1なら1Pixel=1,2なら1Pixel=4ピクセルの画素を、元画像からサンプリングをします。\r
         * ARToolKit互換の標準値は4です。\r
         * 高解像度(64以上)のパターンを用いるときは、サンプリング数を低く設定してください。\r
         * @throws NyARException \r
@@ -108,19 +119,20 @@ public class ARTKMarkerTable
                this._match_patt=new NyARMatchPatt_Color_WITHOUT_PCA(i_resolution_x,i_resolution_y);\r
        }\r
        /**\r
-        * ARTKパターンコードを、テーブルに追加します。このパターンコードのメタデータとして、IDと名前を指定できます。\r
+        * テーブル操作関数です。{@link NyARCode}を元にして、テーブルにマーカパターンを追加します。\r
         * @param i_code\r
-        * ARToolKitå½¢å¼\8fã\81®ã\83\91ã\82¿ã\83¼ã\83³ã\82³ã\83¼ã\83\89ã\82\92æ ¼ç´\8dã\81\97ã\81\9fã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\80\82ã\81\93ã\81®ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\81¯ã\80\81é\96¢æ\95°æ\88\90å\8a\9få¾\8cã\81¯ã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹ã\81«æ\89\80æ\9c\89ã\81\95ã\82\8cます。\r
+        * ARToolKitå½¢å¼\8fã\81®ã\83\91ã\82¿ã\83¼ã\83³ã\82³ã\83¼ã\83\89ã\82\92æ ¼ç´\8dã\81\97ã\81\9fã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\80\82ã\81\93ã\81®ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\81¯ã\80\81é\96¢æ\95°æ\88\90å\8a\9få¾\8cã\81¯ã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹ã\81\8cæ\89\80æ\9c\89ã\81\97ます。\r
         * パターンコードの解像度は、コンストラクタに指定した高さと幅である必要があります。\r
         * @param i_id\r
-        * このマーカを識別するユーザ定義のID値です。任意の値を指定できます。不要な場合は0を指定してください。\r
+        * ã\81\93ã\81®ã\83\9eã\83¼ã\82«ã\82\92è­\98å\88¥ã\81\99ã\82\8bã\80\81ã\83¦ã\83¼ã\82¶å®\9a義ã\81®IDå\80¤ã\81§ã\81\99ã\80\82ä»»æ\84\8fã\81®å\80¤ã\82\92æ\8c\87å®\9aã\81§ã\81\8dã\81¾ã\81\99ã\80\82ä¸\8dè¦\81ã\81ªå ´å\90\88ã\81¯0ã\82\92æ\8c\87å®\9aã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82\r
         * @param i_name\r
         * ユーザ定義の名前です。任意の値を指定できます。不要な場合はnullを指定して下さい。\r
         * @param i_width\r
-        * マーカの高さ[通常mm単位]\r
+        * 実際のマーカの高さです。[通常mm単位]\r
         * @param i_height\r
-        * マーカの幅[通常mm単位]\r
+        * 実際のマーカの幅です。[通常mm単位]\r
         * @return\r
+        * 登録に成功すると、trueを返します。\r
         */\r
        public boolean addMarker(NyARCode i_code,int i_id,String i_name,double i_width,double i_height)\r
        {\r
@@ -133,17 +145,19 @@ public class ARTKMarkerTable
                return true;\r
        }\r
        /**\r
-        * i_rasterからパターンコードを生成して、テーブルへ追加します。\r
+        * テーブル操作関数です。{@link NyARRgbRaster}クラスのオブジェクトからマーカパターンを生成して、テーブルへ追加します。方位は、上方向がdirection=0になります。\r
         * @param i_raster\r
+        * マーカパターンの元となるラスタを指定します。解像度は、コンストラクタで指定したものと同じでなければなりません。\r
         * @param i_id\r
         * このマーカを識別するユーザ定義のID値です。任意の値を指定できます。不要な場合は0を指定してください。\r
         * @param i_name\r
         * ユーザ定義の名前です。任意の値を指定できます。不要な場合はnullを指定して下さい。\r
         * @param i_width\r
-        * マーカの高さ[通常mm単位]\r
+        * 実際のマーカの高さです。[通常mm単位]\r
         * @param i_height\r
-        * マーカの幅[通常mm単位]\r
+        * 実際のマーカの幅です。[通常mm単位]\r
         * @return\r
+        * 登録に成功すると、trueを返します。\r
         * @throws NyARException\r
         */\r
        public boolean addMarker(NyARRgbRaster i_raster,int i_id,String i_name,double i_width,double i_height) throws NyARException\r
@@ -158,17 +172,19 @@ public class ARTKMarkerTable
                return true;\r
        }\r
        /**\r
-        * ARToolkit準拠のパターンファイルからパターンコードを生成して、テーブルへ追加します。\r
+        * テーブル操作関数です。ARToolkit準拠のパターンファイルを読み込み、テーブルへ追加します。\r
         * @param i_filename\r
+        * パターンファイルのファイルパスを指定します。\r
         * @param i_id\r
         * このマーカを識別するユーザ定義のID値です。任意の値を指定できます。不要な場合は0を指定してください。\r
         * @param i_name\r
         * ユーザ定義の名前です。任意の値を指定できます。不要な場合はnullを指定して下さい。\r
         * @param i_width\r
-        * マーカの高さ[通常mm単位]\r
+        * 実際のマーカの高さです。[通常mm単位]\r
         * @param i_height\r
-        * マーカの幅[通常mm単位]\r
+        * 実際のマーカの幅です。[通常mm単位]\r
         * @return\r
+        * 登録に成功すると、trueを返します。\r
         * @throws NyARException\r
         */\r
        public boolean addMarkerFromARPattFile(String i_filename,int i_id,String i_name,double i_width,double i_height) throws NyARException\r
@@ -183,19 +199,19 @@ public class ARTKMarkerTable
                return true;\r
        }       \r
        \r
-       private NyARMatchPattResult __tmp_patt_result=new NyARMatchPattResult();\r
        /**\r
-        * RealityTargetに最も一致するパターンをテーブルから検索して、メタデータを返します。\r
+        * テーブル検索関数です。\r
+        * {@link NyARRealityTarget}を元に{@link NyARRealitySource}からパターンのサンプリングを行い、最も一致するマーカパターンをテーブルから検索します。\r
+        * 検索キーとなる{@link NyARRealityTarget}は、{@link NyARReality}派生クラスから取得した物を指定します。\r
         * @param i_target\r
-        * Realityが検出したターゲット。\r
-        * Unknownターゲットを指定すること。\r
+        * 検索キーとなる、Unknownステータスの{@link NyARRealityTarget}クラスのオブジェクトを指定します。\r
         * @param i_rtsorce\r
-        * i_targetを検出したRealitySourceインスタンス\r
+        * i_targetを検出した{@link NyARRealitySource}のインスタンスを指定します。関数は、このソースからパターン取得を行います\r
         * @param o_result\r
         * 返却値を格納するインスタンスを設定します。\r
-        * 返却値がtrueの場合のみ、内容が更新されています。\r
         * @return\r
-        * 特定に成功すると、trueを返します。\r
+        * パターンのサンプリングに成功すると、trueを返します。\r
+        * 返却値がtrueの場合のみ、内容が更新されています。\r
         * @throws NyARException \r
         */\r
        public boolean getBestMatchTarget(NyARRealityTarget i_target,NyARRealitySource i_rtsorce,GetBestMatchTargetResult o_result) throws NyARException\r