OSDN Git Service

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit/trunk@803 7cac0...
authornyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Sat, 22 Jan 2011 10:04:55 +0000 (10:04 +0000)
committerAtsuo Igarashi <atsuoigarashi@ubuntu.(none)>
Tue, 5 Apr 2011 09:32:22 +0000 (18:32 +0900)
18 files changed:
lib/src/jp/nyatla/nyartoolkit/core/transmat/solver/INyARTransportVectorSolver.java
lib/src/jp/nyatla/nyartoolkit/core/transmat/solver/NyARTransportVectorSolver.java
lib/src/jp/nyatla/nyartoolkit/core/transmat/solver/NyARTransportVectorSolver_ARToolKit.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARBufferType.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARDoublePoint2d.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARDoublePoint3d.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARHistogram.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARIntCoordinates.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARIntPoint2d.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARIntRect.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARIntSize.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARLinear.java
lib/src/jp/nyatla/nyartoolkit/core/types/NyARVecLinear2d.java
lib/src/jp/nyatla/nyartoolkit/core/types/matrix/INyARDoubleMatrix.java
lib/src/jp/nyatla/nyartoolkit/core/types/matrix/NyARDoubleMatrix22.java
lib/src/jp/nyatla/nyartoolkit/core/types/matrix/NyARDoubleMatrix33.java
lib/src/jp/nyatla/nyartoolkit/core/types/matrix/NyARDoubleMatrix34.java
lib/src/jp/nyatla/nyartoolkit/core/types/matrix/NyARDoubleMatrix44.java

index 25ad4eb..ea85970 100644 (file)
@@ -35,21 +35,29 @@ import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint2d;
 import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;\r
 \r
 /**\r
- * 並進ベクトル[T]を3次元座標[b]と基点の回転済行列[M]から計算するインタフェイスです。\r
- * [M][T]=[b]\r
- *\r
+ * このインタフェイスは、姿勢変換行列の並進ベクトルを計算する関数を定義します。\r
+ * 並進ベクトルは、3次元座標と、射影後の二次元座標を元に計算します。\r
  */\r
 public interface INyARTransportVectorSolver\r
 {\r
+       /**\r
+        * この関数は、射影変換後の2次元頂点座標をセットします。\r
+        * 実装クラスでは、射影変換後の2次元座標を元にしたパラメータを、インスタンスに記録する処理を書いてください。\r
+        * @param i_ref_vertex_2d\r
+        * 射影変換後の頂点座標配列。\r
+        * @param i_number_of_vertex\r
+        * 頂点座標配列の要素数\r
+        * @throws NyARException\r
+        */\r
        public void set2dVertex(NyARDoublePoint2d[] i_ref_vertex_2d,int i_number_of_vertex) throws NyARException;\r
        /**\r
         * 画面座標群と3次元座標群から、平行移動量を計算します。\r
-        * 2d座標系は、直前に実行したset2dVertexのものを使用します。\r
-        * @param i_vertex_2d\r
-        * 直前のset2dVertexコールで指定したものと同じものを指定してください。\r
+        * 2d座標系は、直前に実行した{@link #set2dVertex}のものを使用します。\r
+        * 実装クラスでは、並進ベクトルを計算して返却する処理を書いてください。\r
         * @param i_vertex3d\r
         * 3次元空間の座標群を設定します。頂点の順番は、画面座標群と同じ順序で格納してください。\r
         * @param o_transfer\r
+        * 並進ベクトルを受け取るオブジェクトを指定します。\r
         * @throws NyARException\r
         */\r
        public void solveTransportVector(NyARDoublePoint3d[] i_vertex3d,NyARDoublePoint3d o_transfer) throws NyARException;\r
index a18bc53..f98cf74 100644 (file)
@@ -30,14 +30,15 @@ import jp.nyatla.nyartoolkit.core.param.NyARPerspectiveProjectionMatrix;
 import jp.nyatla.nyartoolkit.core.types.*;\r
 \r
 /**\r
- * 並進ベクトル[T]を3次元座標[b]と基点の回転済行列[M]から計算します。\r
- * \r
+ * このクラスは、ARToolKitと同じアルゴリズムを、異なる演算手順で処理して、並進ベクトルを求めます。\r
  * アルゴリズムは、ARToolKit 拡張現実プログラミング入門 の、P207のものです。\r
- * \r
- * 計算手順\r
+ * <p>計算手順\r
+ * <pre>\r
  * [A]*[T]=bを、[A]T*[A]*[T]=[A]T*[b]にする。\r
  * set2dVertexで[A]T*[A]=[M]を計算して、Aの3列目の情報だけ保存しておく。\r
  * getTransportVectorで[M]*[T]=[A]T*[b]を連立方程式で解いて、[T]を得る。\r
+ * </pre>\r
+ * </p>\r
  */\r
 public class NyARTransportVectorSolver implements INyARTransportVectorSolver\r
 {\r
@@ -45,6 +46,14 @@ public class NyARTransportVectorSolver implements INyARTransportVectorSolver
        private double[] _cy;   \r
        private final NyARPerspectiveProjectionMatrix _projection_mat;\r
        private int _nmber_of_vertex;\r
+       /**\r
+        * コンストラクタです。\r
+        * 射影変換オブジェクトの参照値と、取り扱う頂点の最大数を指定して、インスタンスを生成します。\r
+        * @param i_projection_mat_ref\r
+        * 射影変換オブジェクトの参照値です。\r
+        * @param i_max_vertex\r
+        * 取り扱う頂点の最大数。\r
+        */\r
        public NyARTransportVectorSolver(NyARPerspectiveProjectionMatrix i_projection_mat_ref,int i_max_vertex)\r
        {\r
                this._projection_mat=i_projection_mat_ref;\r
@@ -54,13 +63,8 @@ public class NyARTransportVectorSolver implements INyARTransportVectorSolver
        }\r
        private double _a00,_a01_10,_a02_20,_a11,_a12_21,_a22;\r
        /**\r
-        * 平行移動量計算のための、画面上の頂点群を指定します。\r
-        * @param i_ref_vertex_2d\r
-        * 入力パラメータ。歪み矯正済の画面上の頂点座標群への参照値を指定します。\r
-        * @param i_number_of_vertex\r
-        * i_ref_vertex_2dのデータ数を指定します。\r
-        * @throws NyARException\r
-        * \r
+        * この関数は、射影変換後の2次元頂点座標をセットします。\r
+        * i_number_of_vertexは、コンストラクタで指定した最大数以下である必要があります。\r
         */\r
        public void set2dVertex(NyARDoublePoint2d[] i_ref_vertex_2d,int i_number_of_vertex) throws NyARException\r
        {\r
@@ -101,12 +105,8 @@ public class NyARTransportVectorSolver implements INyARTransportVectorSolver
        }\r
        \r
        /**\r
-        * 先にセットした2次元座標群と3次元座標群から、平行移動量を計算します。\r
-        * 2d座標系は、直前に実行したset2dVertexのものを使用します。\r
-        * @param i_vertex3d\r
-        * 3次元空間の座標群を設定します。頂点の順番は、画面座標群と同じ順序で格納してください。\r
-        * @param o_transfer\r
-        * @throws NyARException\r
+        * 画面座標群と3次元座標群から、平行移動量を計算します。\r
+        * 2d座標系は、直前に実行した{@link #set2dVertex}のものを使用します。\r
         */\r
        public void solveTransportVector(NyARDoublePoint3d[] i_vertex3d,NyARDoublePoint3d o_transfer) throws NyARException\r
        {\r
index d054d98..1dbfb75 100644 (file)
@@ -37,9 +37,7 @@ import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint2d;
 import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;\r
 \r
 /**\r
- * 並進ベクトル[T]を3次元座標[b]と基点の回転済行列[M]から計算します。\r
- * ARToolKit互換の数値を計算します。\r
- *\r
+ * このクラスは、ARToolKitと同じ計算手順で並進ベクトルを求めます。\r
  */\r
 public class NyARTransportVectorSolver_ARToolKit implements INyARTransportVectorSolver\r
 {\r
@@ -53,7 +51,13 @@ public class NyARTransportVectorSolver_ARToolKit implements INyARTransportVector
        private double[] _cy=new double[4];\r
        \r
        private final NyARPerspectiveProjectionMatrix _projection_mat;\r
-       public NyARTransportVectorSolver_ARToolKit(final NyARPerspectiveProjectionMatrix i_projection_mat_ref)\r
+       /**\r
+        * コンストラクタです。\r
+        * 射影変換オブジェクトの参照値を指定して、インスタンスを生成します。\r
+        * @param i_projection_mat_ref\r
+        * 射影変換オブジェクトの参照値です。\r
+        */\r
+       public NyARTransportVectorSolver_ARToolKit(NyARPerspectiveProjectionMatrix i_projection_mat_ref)\r
        {\r
                this._projection_mat=i_projection_mat_ref;\r
                //aとb(aの転置行列)の固定部分を設定。\r
@@ -70,6 +74,10 @@ public class NyARTransportVectorSolver_ARToolKit implements INyARTransportVector
                }\r
                return;\r
        }\r
+       /**\r
+        * この関数は、射影変換後の2次元頂点座標をセットします。\r
+        * i_number_of_vertexは4である必要があります。\r
+        */\r
        public void set2dVertex(NyARDoublePoint2d[] i_ref_vertex_2d,int i_number_of_vertex) throws NyARException\r
        {               \r
                assert(i_number_of_vertex==4);\r
@@ -94,13 +102,7 @@ public class NyARTransportVectorSolver_ARToolKit implements INyARTransportVector
        }\r
        /**\r
         * 画面座標群と3次元座標群から、平行移動量を計算します。\r
-        * 2d座標系は、直前に実行したset2dVertexのものを使用します。\r
-        * @param i_vertex_2d\r
-        * 直前のset2dVertexコールで指定したものと同じものを指定してください。\r
-        * @param i_vertex3d\r
-        * 3次元空間の座標群を設定します。頂点の順番は、画面座標群と同じ順序で格納してください。\r
-        * @param o_transfer\r
-        * @throws NyARException\r
+        * 2d座標系は、直前に実行した{@link #set2dVertex}のものを使用します。\r
         */\r
        public void solveTransportVector(NyARDoublePoint3d[] i_vertex3d,NyARDoublePoint3d o_transfer) throws NyARException\r
        {\r
index e013f8e..60ab902 100644 (file)
  */\r
 package jp.nyatla.nyartoolkit.core.types;\r
 \r
+/**\r
+ * このクラスは、主に{@link INyARRaster}で使用する、バッファ形式定数を定義します。\r
+ * バッファ形式定数は32bitの値で、フィールドの組合せで定義しています。\r
+ * アプリケーションは、定数からバッファの構造を知ることができます。\r
+ * <pre>\r
+ * <table>\r
+ * <tr><td>ビットイールド(ビット幅)</td><td>カテゴリ</td><td>備考</td></tr>\r
+ * <tr><td>24-31(8)</td><td>予約</td><td></td></tr>\r
+ * <tr><td>16-27(8)</td><td>型ID</td><td>00:無効/01:byte[]/02:int[][]/03:short[]</td></tr>\r
+ * <tr><td>08-15(8)</td><td>ビットフォーマットID</td><td>00:24bit/01:32bit/02:16bit</td></tr>\r
+ * <tr><td>00-07(8)</td><td>型番号</td><td></td></tr>\r
+ * </table>\r
+ * </pre>\r
+ */\r
 public class NyARBufferType\r
 {\r
        private static final int T_BYTE1D =0x00010000;\r
@@ -38,106 +52,107 @@ public class NyARBufferType
        private static final int T_INT1D  =0x00040000;\r
        private static final int T_OBJECT =0x00100000;\r
        private static final int T_USER   =0x00FF0000;\r
-       //  24-31(8)予約\r
-       //  16-27(8)型ID\r
-       //      00:無効/01:byte[]/02:int[][]/03:short[]\r
-       //  08-15(8)ビットフォーマットID\r
-       //      00:24bit/01:32bit/02:16bit\r
-       //  00-07(8)型番号\r
        //\r
-       /**\r
-        * RGB24フォーマットで、全ての画素が0\r
+       \r
+       //\r
+       //特殊な定数\r
+       //\r
+       \r
+       /** 全ての画素が0。バッファオブジェクトは常にNULL。\r
         */\r
        public static final int NULL_ALLZERO = 0x00000001;\r
-       /**\r
-        * USER - USER+0xFFFFはユーザー定義型。実験用に。\r
+       \r
+       /** ユーザ定義のバッファ型。USER_DEFINE + (0x0000~0xFFFF)\r
+        * 実験等に使ってください。\r
         */\r
        public static final int USER_DEFINE  = T_USER;\r
+       \r
+       //\r
+       //byte形式\r
+       //\r
 \r
-       /**\r
-        * byte[]で、R8G8B8の24ビットで画素が格納されている。\r
+       /** RGB形式。byte[3]で、R8G8B8の24ビットで画素が格納されている。\r
         */\r
        public static final int BYTE1D_R8G8B8_24   = T_BYTE1D|0x0001;\r
-       /**\r
-        * byte[]で、B8G8R8の24ビットで画素が格納されている。\r
+       /** RGB形式。 byte[3]で、B8G8R8の24ビットの画素フォーマット。\r
         */\r
        public static final int BYTE1D_B8G8R8_24   = T_BYTE1D|0x0002;\r
-       /**\r
-        * byte[]で、R8G8B8X8の32ビットで画素が格納されている。\r
+       /** RGB形式。byte[4]で、R8G8B8X8の32ビットの画素フォーマット。\r
         */\r
        public static final int BYTE1D_B8G8R8X8_32 = T_BYTE1D|0x0101;\r
-       /**\r
-        * byte[]で、X8R8G8B8の32ビットで画素が格納されている。\r
+       /** RGB形式。byte[4]で、X8R8G8B8の32ビットの画素フォーマット。\r
         */\r
        public static final int BYTE1D_X8R8G8B8_32 = T_BYTE1D|0x0102;\r
 \r
-       /**\r
-        * byte[]で、RGB565の16ビット(little/big endian)で画素が格納されている。\r
+       /** RGB形式。byte[2]で、RGB565の16ビット(little endian)の画素フォーマット。\r
         */\r
        public static final int BYTE1D_R5G6B5_16LE = T_BYTE1D|0x0201;\r
+       /** RGB形式。byte[2]で、RGB565の16ビット(big endian)の画素フォーマット。\r
+        */\r
     public static final int BYTE1D_R5G6B5_16BE = T_BYTE1D|0x0202;\r
-       /**\r
-        * short[]で、RGB565の16ビット(little/big endian)で画素が格納されている。\r
+       /** RGB形式。short[1]で、RGB565の16ビット(little endian)の画素フォーマット。\r
         */     \r
     public static final int WORD1D_R5G6B5_16LE = T_SHORT1D|0x0201;\r
+       /** RGB形式。short[1]で、RGB565の16ビット(big endian)の画素フォーマット。\r
+        */\r
     public static final int WORD1D_R5G6B5_16BE = T_SHORT1D|0x0202;\r
 \r
+    //\r
+    //int[][]形式\r
+    //\r
        \r
-       /**\r
-        * int[][]で特に値範囲を定めない\r
+       /** int値形式。int[1][1]で、1pixel=1画素のフォーマット。\r
         */\r
        public static final int INT2D        = T_INT2D|0x0000;\r
-       /**\r
-        * int[][]で0-255のグレイスケール画像\r
+       /** フレースケール形式。int[1][1]で8itの(0-255)のグレイスケール画像\r
         */\r
        public static final int INT2D_GRAY_8 = T_INT2D|0x0001;\r
-       /**\r
-        * int[][]で0/1の2値画像\r
-        * これは、階調値1bitのBUFFERFORMAT_INT2D_GRAY_1と同じです。\r
+       /** 二値形式。int[1][1]で、0 or 1の2値画像\r
         */\r
        public static final int INT2D_BIN_8  = T_INT2D|0x0002;\r
 \r
-       /**\r
-        * int[]で特に値範囲を定めない\r
+       //\r
+    //int[]形式\r
+    //\r
+       \r
+       /** int値形式。int[1]で、1pixel=1画素のフォーマット。\r
         */\r
        public static final int INT1D        = T_INT1D|0x0000;\r
-       /**\r
-        * int[]で0-255のグレイスケール画像\r
+       /** フレースケール形式。int[1]で8itの(0-255)のグレイスケール画像\r
         */\r
        public static final int INT1D_GRAY_8 = T_INT1D|0x0001;\r
-       /**\r
-        * int[]で0/1の2値画像\r
-        * これは、階調1bitのINT1D_GRAY_1と同じです。\r
+       /** 二値形式。int[1]で、0 or 1の2値画像\r
         */\r
        public static final int INT1D_BIN_8  = T_INT1D|0x0002;\r
        \r
-       \r
-       /**\r
-        * int[]で、XRGB32の32ビットで画素が格納されている。\r
-        */     \r
+       /** RGB形式。int[1]で、XRGB32の32ビットの画素フォーマット。\r
+        *  (エンディアンはプラットフォーム依存。)\r
+        */\r
     public static final int INT1D_X8R8G8B8_32=T_INT1D|0x0102;\r
 \r
-       /**\r
-        * H:9bit(0-359),S:8bit(0-255),V(0-255)\r
+       /** HSV形式。int[1]で、H:9bit(0-359),S:8bit(0-255),V(0-255)の画素フォーマット\r
         */\r
        public static final int INT1D_X7H9S8V8_32=T_INT1D|0x0103;\r
     \r
+       //\r
+       //プラットフォーム固有形式\r
+       //\r
 \r
-    /**\r
-     * プラットフォーム固有オブジェクト\r
-     */\r
+       /** Javaプラットフォーム固有オブジェクトのドメインです。*/\r
        public static final int OBJECT_Java= T_OBJECT|0x0100;\r
+       /** C#プラットフォーム固有オブジェクトのドメインです。*/\r
        public static final int OBJECT_CS  = T_OBJECT|0x0200;\r
+       /** AS3プラットフォーム固有オブジェクトのドメインです。*/\r
        public static final int OBJECT_AS3 = T_OBJECT|0x0300;\r
        \r
        /**\r
-        * JavaのBufferedImageを格納するラスタ\r
+        * RGB形式。バッファは、JavaのBufferedImage型オブジェクト\r
         */\r
        public static final int OBJECT_Java_BufferedImage= OBJECT_Java|0x01;\r
        \r
        \r
        /**\r
-        * ActionScript3のBitmapDataを格納するラスタ\r
+        * RGB形式。バッファは、ActionScript3のBitmapData型オブジェクト\r
         */\r
        public static final int OBJECT_AS3_BitmapData= OBJECT_AS3|0x01;\r
 \r
index f8acf69..2f810ff 100644 (file)
 package jp.nyatla.nyartoolkit.core.types;\r
 \r
 \r
-\r
 /**\r
- * データ型です。\r
- * 2次元の浮動小数点方の点を格納します。\r
+ * ã\81\93ã\81®ã\82¯ã\83©ã\82¹ã\81¯ã\83\87ã\83¼ã\82¿å\9e\8bã\81§ã\81\99ã\80\82\r
+ * 2次元の浮動小数点座標を格納します。\r
  */\r
 public class NyARDoublePoint2d\r
 {\r
+       /** X座標の値です。*/\r
        public double x;\r
+       /** Y座標の値です。*/\r
        public double y;\r
        /**\r
-        * 配列ファクトリ\r
+        * この関数は、オブジェクトの一次元配列を作ります。\r
         * @param i_number\r
+        * 作成する配列の長さ\r
         * @return\r
+        * 新しい配列。\r
         */\r
        public static NyARDoublePoint2d[] createArray(int i_number)\r
        {\r
@@ -54,6 +57,15 @@ public class NyARDoublePoint2d
                }\r
                return ret;\r
        }\r
+       /**\r
+        * この関数は、オブジェクトの二次元配列を作ります。\r
+        * @param i_length_x\r
+        * 作成する配列の列数\r
+        * @param i_length_y\r
+        * 作成する配列の行数\r
+        * @return\r
+        * 新しい配列。\r
+        */     \r
        public static NyARDoublePoint2d[][] create2dArray(int i_length_x,int i_length_y)\r
        {\r
                NyARDoublePoint2d[][] ret=new NyARDoublePoint2d[i_length_y][i_length_x];\r
@@ -67,36 +79,45 @@ public class NyARDoublePoint2d
                return ret;\r
        }\r
        /**\r
-        * p1->p2と、p2->p3の直線の外積を計算します。\r
+        * この関数は、3点で定義される直線から、外積を計算します。\r
+        * 外積は、p1->p2と、p2->p3で定義する直線の外積です。\r
         * @param p1\r
+        * 点1\r
         * @param p2\r
+        * 点2\r
         * @param p3\r
+        * 点3\r
         * @return\r
+        * 外積の値\r
         */\r
        public final static double crossProduct3Point(NyARDoublePoint2d p1,NyARDoublePoint2d p2,NyARDoublePoint2d p3)\r
        {\r
                return (p2.x-p1.x)*(p3.y-p2.y)-(p2.y-p1.y)*(p3.x-p2.x);\r
        }\r
        /**\r
-        * p1->p2と、p2->p3の直線の外積を計算します。\r
+        * この関数は、3点で定義される直線から、外積を計算します。\r
+        * 外積は、p1->p2と、p2->p3で定義する直線の外積です。\r
         * @param p1\r
+        * 点1\r
         * @param p2\r
+        * 点2\r
         * @param p3\r
+        * 点3\r
         * @return\r
+        * 外積の値\r
         */\r
        public final static double crossProduct3Point(NyARDoublePoint2d p1,NyARDoublePoint2d p2,double p3_x,double p3_y)\r
        {\r
                return (p2.x-p1.x)*(p3_y-p2.y)-(p2.y-p1.y)*(p3_x-p2.x);\r
        }\r
-\r
-       \r
-       \r
        /**\r
-        * 頂点配列の中央値を求めます。\r
+        * この関数は、頂点集合から、中央値(Σp[n]/n)を求めます。\r
         * @param i_points\r
+        * 頂点集合を格納した配列です。\r
         * @param i_number_of_data\r
         * 配列中の有効な頂点数です。\r
         * @param o_out\r
+        * 中央値を受け取るオブジェクトです。\r
         */\r
        public final static void makeCenter(NyARDoublePoint2d[] i_points,int i_number_of_data,NyARDoublePoint2d o_out)\r
        {\r
@@ -111,10 +132,13 @@ public class NyARDoublePoint2d
                o_out.x=y/i_number_of_data;\r
        }\r
        /**\r
-        * {@link #makeCenter}の出力型違いの関数です。\r
+        * この関数は、頂点集合から、中央値(Σp[n]/n)を求めます。\r
         * @param i_points\r
+        * 頂点集合を格納した配列です。\r
         * @param i_number_of_data\r
+        * 配列中の有効な頂点数です。\r
         * @param o_out\r
+        * 中央値を受け取るオブジェクトです。\r
         */\r
        public final static void makeCenter(NyARDoublePoint2d[] i_points,int i_number_of_data,NyARIntPoint2d o_out)\r
        {\r
@@ -128,9 +152,9 @@ public class NyARDoublePoint2d
                o_out.x=(int)(lx/i_number_of_data);\r
                o_out.y=(int)(ly/i_number_of_data);\r
        }\r
-       \r
        /**\r
         * コンストラクタです。\r
+        * 初期値を格納したインスタンスを生成します。\r
         */\r
        public NyARDoublePoint2d()\r
        {\r
@@ -139,8 +163,12 @@ public class NyARDoublePoint2d
                return;\r
        }\r
        /**\r
-        * i_srcの値をthisへセットします。\r
-        * @param i_src\r
+        * コンストラクタです。\r
+        * 初期値を指定してインスタンスを生成します。\r
+        * @param i_x\r
+        * {@link #x}の初期値\r
+        * @param i_y\r
+        * {@link #y}の初期値\r
         */\r
        public NyARDoublePoint2d(double i_x,double i_y)\r
        {\r
@@ -149,8 +177,10 @@ public class NyARDoublePoint2d
                return;\r
        }\r
        /**\r
-        * i_srcの値をthisへセットします。\r
+        * コンストラクタです。\r
+        * i_srcの値で初期化したインスタンスを生成します。\r
         * @param i_src\r
+        * 初期値とするオブジェクト\r
         */\r
        public NyARDoublePoint2d(NyARDoublePoint2d i_src)\r
        {\r
@@ -159,8 +189,10 @@ public class NyARDoublePoint2d
                return;\r
        }\r
        /**\r
-        * i_srcの値をthisへセットします。\r
+        * コンストラクタです。\r
+        * i_srcの値で初期化したインスタンスを生成します。\r
         * @param i_src\r
+        * 初期値とするオブジェクト\r
         */\r
        public NyARDoublePoint2d(NyARIntPoint2d i_src)\r
        {\r
@@ -169,10 +201,11 @@ public class NyARDoublePoint2d
                return;\r
        }\r
        /**\r
-        * p2-p1間の距離の二乗値を計算します。\r
+        * この関数は、インスタンスの座標と、指定点との距離の2乗値を返します。\r
         * @param i_p1\r
-        * @param i_p2\r
+        * 点の座標\r
         * @return\r
+        * i_p1との距離の二乗値\r
         */     \r
        public final double sqDist(NyARDoublePoint2d i_p1)\r
        {\r
@@ -181,16 +214,24 @@ public class NyARDoublePoint2d
                y=this.y-i_p1.y;\r
                return x*x+y*y;\r
        }\r
+       /**\r
+        * この関数は、インスタンスの座標と、指定点との距離の2乗値を返します。\r
+        * @param i_p1\r
+        * 点の座標\r
+        * @return\r
+        * i_p1との距離の二乗値\r
+        */     \r
        public final double sqDist(NyARIntPoint2d i_p1)\r
        {\r
                double x,y;\r
                x=this.x-i_p1.x;\r
                y=this.y-i_p1.y;\r
                return x*x+y*y;\r
-       }       \r
+       }\r
        /**\r
-        * i_srcの値をthisへセットします。\r
+        * この関数は、オブジェクトからインスタンスに値をセットします。\r
         * @param i_src\r
+        * コピー元のオブジェクト。\r
         */\r
        public final void setValue(NyARDoublePoint2d i_src)\r
        {\r
@@ -199,8 +240,9 @@ public class NyARDoublePoint2d
                return;\r
        }\r
        /**\r
-        * i_srcの値をthisへセットします。\r
+        * この関数は、オブジェクトからインスタンスに値をセットします。\r
         * @param i_src\r
+        * コピー元のオブジェクト。\r
         */\r
        public final void setValue(NyARIntPoint2d i_src)\r
        {\r
@@ -208,10 +250,17 @@ public class NyARDoublePoint2d
                this.y=(double)i_src.y;\r
                return;\r
        }\r
-       public final void setValue(double x,double y)\r
+       /**\r
+        * この関数は、インスタンスに値をセットします。\r
+        * @param i_x\r
+        * {@link #x}にセットする値\r
+        * @param i_y\r
+        * {@link #y}にセットする値\r
+        */\r
+       public final void setValue(double i_x,double i_y)\r
        {\r
-               this.x=x;\r
-               this.y=y;\r
+               this.x=i_x;\r
+               this.y=i_y;\r
                return;\r
        }\r
        \r
index d1d7e4a..30ac9e7 100644 (file)
  * \r
  */\r
 package jp.nyatla.nyartoolkit.core.types;\r
-\r
+/**\r
+ * このクラスはデータ型です。\r
+ * 3次元の浮動小数点座標を格納します。\r
+ */\r
 public class NyARDoublePoint3d\r
 {\r
+       /** X座標の値です。*/\r
        public double x;\r
+       /** Y座標の値です。*/\r
        public double y;\r
+       /** Z座標の値です。*/    \r
        public double z;\r
        /**\r
-        * 配列ファクトリ\r
+        * この関数は、オブジェクトの一次配列を作ります。\r
         * @param i_number\r
+        * 作成する配列の長さ\r
         * @return\r
+        * 新しい配列。\r
         */\r
        public static NyARDoublePoint3d[] createArray(int i_number)\r
        {\r
@@ -49,6 +57,11 @@ public class NyARDoublePoint3d
                }\r
                return ret;\r
        }\r
+       /**\r
+        * この関数は、オブジェクトからインスタンスに値をセットします。\r
+        * @param i_in\r
+        * コピー元のオブジェクト。\r
+        */     \r
        public final void setValue(NyARDoublePoint3d i_in)\r
        {\r
                this.x=i_in.x;\r
@@ -57,10 +70,12 @@ public class NyARDoublePoint3d
                return;\r
        }\r
        /**\r
-        * p2-p1間の距離の二乗値を計算します。\r
+        * この関数は、インスタンスの座標と、指定点との距離の2乗値を返します。\r
         * @param i_p1\r
+        * 点の座標\r
         * @return\r
-        */     \r
+        * i_p1との距離の二乗値\r
+        */             \r
        public final double sqDist(NyARDoublePoint3d i_p1)\r
        {\r
                double x,y,z;\r
index 6d0293a..c27ab3f 100644 (file)
  */\r
 package jp.nyatla.nyartoolkit.core.types;\r
 \r
+\r
 /**\r
- * ã\83\92ã\82¹ã\83\88ã\82°ã\83©ã\83 ã\82\92æ ¼ç´\8dã\81\99ã\82\8bã\82¯ã\83©ã\82¹ã\81§ã\81\99ã\80\82\r
+ * ã\81\93ã\81®ã\82¯ã\83©ã\82¹ã\81¯ã\80\81ã\83\92ã\82¹ã\83\88ã\82°ã\83©ã\83 ã\82\92æ ¼ç´\8dã\81\99ã\82\8bã\83\87ã\83¼ã\82¿å\9e\8b\r
  */\r
 public class NyARHistogram\r
 {\r
-       /**\r
-        * サンプリング値の格納変数\r
+       /** ヒストグラムを格納する配列です。\r
+        * <p>注意 - 配列の長さ({@link #data})と{@link #length}の意味は異なります。\r
+        * ヒストグラムの解像度に、この配列の長さを使わないでください。</p>\r
         */\r
        public final int[] data;\r
-       /**\r
-        * 有効なサンプリング値の範囲。[0-data.length-1]\r
+       /** ヒストグラムの解像度です。\r
+        * {@link #data}配列の0から{@link #length}-1までの要素が、アクセス可能な要素です。\r
         */\r
        public int length;\r
        /**\r
-        * 有効なサンプルの総数 data[i]\r
+        * ヒストグラムの合計値です。\r
+        * ヒストグラム分析器は、ここにヒストグラム要素の合計値を書込みます。\r
         */\r
        public int total_of_data;\r
        \r
        \r
-       \r
+       /**\r
+        * コンストラクタです。\r
+        * ヒストグラムの解像度を指定してインスタンスを作ります。\r
+        * @param i_length\r
+        * ヒストグラムの解像度値。通常は256を指定してください。\r
+        */\r
        public NyARHistogram(int i_length)\r
        {\r
                this.data=new int[i_length];\r
@@ -57,10 +65,13 @@ public class NyARHistogram
                this.total_of_data=0;\r
        }\r
        /**\r
-        * 区間i_stからi_edまでの総データ数を返します。\r
+        * この関数は、ヒストグラム要素の、i_stからi_edまでの区間の、合計値を返します。\r
         * @param i_st\r
+        * 集計開始点のインデクス\r
         * @param i_ed\r
+        * 集計終了点のインデクス\r
         * @return\r
+        * ヒストグラムの合計値\r
         */\r
        public final int getTotal(int i_st,int i_ed)\r
        {\r
@@ -73,8 +84,10 @@ public class NyARHistogram
                return result;\r
        }\r
        /**\r
-        * 指定したi_pos未満サンプルを0にします。\r
+        * この関数は、指定したインデクス以下のヒストグラム要素を0にします。\r
+        * 実行結果は、{@link #total_of_data}に反映されます。\r
         * @param i_pos\r
+        * 操作するヒストグラム要素のインデクス値。\r
         */\r
        public void lowCut(int i_pos)\r
        {\r
@@ -86,8 +99,10 @@ public class NyARHistogram
                this.total_of_data-=s;\r
        }\r
        /**\r
-        * 指定したi_pos以上のサンプルを0にします。\r
+        * この関数は、指定したインデクス以上のヒストグラム要素を0にします。\r
+        * 実行結果は、{@link #total_of_data}に反映されます。\r
         * @param i_pos\r
+        * 操作するヒストグラム要素のインデクス値。\r
         */\r
        public void highCut(int i_pos)\r
        {\r
@@ -99,7 +114,9 @@ public class NyARHistogram
                this.total_of_data-=s;\r
        }\r
        /**\r
-        * 最小の値が格納されているサンプル番号を返します。\r
+        * この関数は、ヒストグラム要素の中で最小の要素のインデクス番号を返します。\r
+        * @return\r
+        * 最小要素のインデクス番号\r
         */\r
        public int getMinSample()\r
        {\r
@@ -116,16 +133,18 @@ public class NyARHistogram
                return ret;\r
        }\r
        /**\r
-        * ã\82µã\83³ã\83\97ã\83«ã\81®ä¸­ã\81§æ\9c\80å°\8fã\81®値を返します。\r
+        * ã\81\93ã\81®é\96¢æ\95°ã\81¯ã\80\81ã\83\92ã\82¹ã\83\88ã\82°ã\83©ã\83 è¦\81ç´ ã\81®ä¸­ã\81§æ\9c\80å°\8fã\81®è¦\81ç´ 値を返します。\r
         * @return\r
+        * 最小要素の値\r
         */\r
        public int getMinData()\r
        {\r
                return this.data[this.getMinSample()];\r
        }\r
        /**\r
-        * 平均値を計算します。\r
+        * この関数は、ヒストグラム要素全体の平均値を計算します。\r
         * @return\r
+        * ヒストグラム要素の平均値\r
         */\r
        public int getAverage()\r
        {\r
index 6450599..a169a95 100644 (file)
  * \r
  */\r
 package jp.nyatla.nyartoolkit.core.types;\r
+\r
 /**\r
- * 座標点配列を定義します。\r
- * 座標点配列は、輪郭線やパスの定義に使用します。\r
+ * このクラスは、整数型の2次元輪郭線を格納します。\r
+ * 輪郭線は、2次元座標{@link NyARIntPoint2d}の集合です。\r
  */\r
 public class NyARIntCoordinates\r
 {\r
-       /**\r
-        * 点を格納する配列です。\r
-        */\r
+       /** 点を格納する配列です。*/\r
        public NyARIntPoint2d[] items;\r
+       /** 有効な要素の長さです。この値の最大値は、{@link #items#length}と同じです。*/\r
+       public int length;\r
        /**\r
-        * 配列の有効な長さです。0から、items.length-1までの数を取ります。\r
+        * コンストラクタです。\r
+        * 最大長さを指定して、有効要素数0のインスタンスを作ります。\r
+        * @param i_length\r
+        * 輪郭の最大長\r
         */\r
-       public int length;\r
        public NyARIntCoordinates(int i_length)\r
        {\r
                this.items=NyARIntPoint2d.createArray(i_length);\r
                this.length=0;\r
        }\r
        /**\r
-        * 指定した点を結ぶ直線を計算して、輪郭に保存します。\r
-        * 動作チェックはしたけど、多分動くレベル。\r
+        * この関数は2点を結ぶ直線を計算して、輪郭線を保存します。\r
+        * 輪郭線は、Bresenhamのアルゴリズムで計算します。\r
+        * 2点間の距離が、格納可能な最大長さ以下になるように注意してください。\r
         * @param i_x0\r
+        * 点1のX座標\r
         * @param i_y0\r
+        * 点1のY座標\r
         * @param i_x1\r
+        * 点2のX座標\r
         * @param i_y1\r
-        * @param o_coord\r
+        * 点2のY座標\r
         * @return\r
         * 成功するとtrueを返します。\r
         */\r
index 0edd449..ebc422b 100644 (file)
 package jp.nyatla.nyartoolkit.core.types;\r
 \r
 /**\r
- * int型の二次元の点を格納します。\r
+ * このクラスは、int型の二次元の点を格納します。\r
  *\r
  */\r
 public class NyARIntPoint2d\r
 {\r
+       /** X座標の値です。*/\r
        public int x;\r
-\r
+       /** Y座標の値です。*/\r
        public int y;\r
        /**\r
-        * 配列ファクトリ\r
+        * この関数は、指定サイズのオブジェクト配列を作ります。\r
         * @param i_number\r
+        * 作成する配列の長さ\r
         * @return\r
+        * 新しい配列。\r
         */\r
        public static NyARIntPoint2d[] createArray(int i_number)\r
        {\r
@@ -54,9 +57,12 @@ public class NyARIntPoint2d
                return ret;\r
        }\r
        /**\r
-        * i_fromからi_toへ配列をコピーします。\r
+        * この関数は、配列の値をコピーします。\r
+        * 配列の長さは、同じである必要があります。\r
         * @param i_from\r
+        * コピー元の配列\r
         * @param i_to\r
+        * コピー先の配列\r
         */\r
        public static void copyArray(final NyARIntPoint2d[] i_from,NyARIntPoint2d[] i_to)\r
        {\r
@@ -68,10 +74,11 @@ public class NyARIntPoint2d
                return;\r
        }\r
        /**\r
-        * p2-p1間の距離の二乗値を計算します。\r
+        * この関数は、インスタンスの座標と、指定点との距離の2乗値を返します。\r
         * @param i_p1\r
-        * @param i_p2\r
+        * 点の座標\r
         * @return\r
+        * i_p1との距離の二乗値\r
         */     \r
        public final int sqDist(NyARIntPoint2d i_p1)\r
        {\r
@@ -79,12 +86,13 @@ public class NyARIntPoint2d
                int y=this.y-i_p1.y;\r
                return x*x+y*y;\r
        }\r
-       \r
        /**\r
-        * 中心位置を計算して設定する。\r
-        * @param i_point\r
-        * @param i_number_of_vertex\r
-        */\r
+        * この関数は、頂点集合から、中央値(Σp[n]/n)を求めて、インスタンスにセットします。\r
+        * @param i_points\r
+        * 頂点集合を格納した配列です。\r
+        * @param i_number_of_data\r
+        * 配列中の有効な頂点数です。\r
+        */     \r
        public final void setCenterPos(NyARIntPoint2d[] i_point,int i_number_of_vertex)\r
        {\r
                int cx,cy;\r
@@ -97,19 +105,32 @@ public class NyARIntPoint2d
                this.y=cy/i_number_of_vertex;\r
        }\r
        /**\r
-        * i_sourceの値を、thisへセットします。\r
+        * この関数は、オブジェクトからインスタンスに値をセットします。\r
         * @param i_source\r
+        * コピー元のオブジェクト。\r
         */\r
        public final void setValue(NyARIntPoint2d i_source)\r
        {\r
                this.x=i_source.x;\r
                this.y=i_source.y;\r
        }\r
+       /**\r
+        * この関数は、オブジェクトからインスタンスに値をセットします。\r
+        * @param i_source\r
+        * コピー元のオブジェクト。\r
+        */     \r
        public final void setValue(NyARDoublePoint2d i_source)\r
        {\r
                this.x=(int)i_source.x;\r
                this.y=(int)i_source.y;\r
        }\r
+       /**\r
+        * この関数は、インスタンスに値をセットします。\r
+        * @param i_x\r
+        * {@link #x}にセットする値\r
+        * @param i_y\r
+        * {@link #y}にセットする値\r
+        */     \r
        public final void setValue(int i_x,int i_y)\r
        {\r
                this.x=i_x;\r
index 720b433..3c97b4b 100644 (file)
 package jp.nyatla.nyartoolkit.core.types;\r
 \r
 /**\r
- * 基点x,yと、幅、高さで矩形を定義します。\r
- *\r
+ * このクラスは、基点x,yと、幅、高さで矩形を定義します。\r
  */\r
 public class NyARIntRect\r
 {\r
+       /** 矩形の左上の点(X)*/\r
        public int x;\r
-\r
+       /** 矩形の左上の点(Y)*/\r
        public int y;\r
-\r
+       /** 矩形の幅(X)*/\r
        public int w;\r
-\r
+       /** 矩形の高さ(Y)*/\r
        public int h;\r
        /**\r
-        * 頂点を包括するRECTを計算します。\r
+        * この関数は、頂点集合を包括する矩形を計算して、インスタンスにセットします。\r
         * @param i_vertex\r
+        * 頂点集合を格納した配列\r
         * @param i_num_of_vertex\r
-        * @param o_rect\r
+        * 計算対象とする要素の数\r
         */\r
        public final void setAreaRect(NyARDoublePoint2d[] i_vertex,int i_num_of_vertex)\r
        {\r
@@ -72,6 +73,13 @@ public class NyARIntRect
                this.w=xmax-xmin+1;\r
                this.y=ymin;\r
        }\r
+       /**\r
+        * この関数は、頂点集合を包括する矩形を計算して、インスタンスにセットします。\r
+        * @param i_vertex\r
+        * 頂点集合を格納した配列\r
+        * @param i_num_of_vertex\r
+        * 計算対象とする要素の数\r
+        */\r
        public final void setAreaRect(NyARIntPoint2d[] i_vertex,int i_num_of_vertex)\r
        {\r
                //エリアを求める。\r
@@ -97,11 +105,15 @@ public class NyARIntRect
        }\r
 \r
        /**\r
-        * 矩形を指定した領域内にクリップします。\r
+        * この関数は、矩形を領域内にクリップします。\r
         * @param top\r
+        * クリップする上辺\r
         * @param bottom\r
+        * クリップする下辺\r
         * @param left\r
+        * クリップする左辺\r
         * @param right\r
+        * クリップする右辺\r
         */\r
        public final void clip(int i_left,int i_top,int i_right,int i_bottom)\r
        {\r
@@ -138,10 +150,13 @@ public class NyARIntRect
        }\r
 \r
        /**\r
-        * 点がRECTの範囲内であるか判定します。\r
+        * この関数は、点が矩形の範囲内にあるか判定します。\r
         * @param i_x\r
+        * 調査する座標(X)\r
         * @param i_y\r
+        * 調査する座標(Y)\r
         * @return\r
+        * 点が矩形の中にあれば、trueを返します。\r
         */\r
        public final boolean isInnerPoint(int i_x,int i_y)\r
        {\r
@@ -150,12 +165,26 @@ public class NyARIntRect
                \r
                return (0<=x && x<this.w && 0<=y && y<this.h);\r
        }\r
+       /**\r
+        * この関数は、点が矩形の範囲内にあるか判定します。\r
+        * @param i_pos\r
+        * 調査する座標\r
+        * @return\r
+        * 点が矩形の中にあれば、trueを返します。\r
+        */\r
        public final boolean isInnerPoint(NyARDoublePoint2d i_pos)\r
        {\r
                int x=(int)i_pos.x-this.x;\r
                int y=(int)i_pos.y-this.y;\r
                return (0<=x && x<this.w && 0<=y && y<this.h);\r
        }\r
+       /**\r
+        * この関数は、点が矩形の範囲内にあるか判定します。\r
+        * @param i_pos\r
+        * 調査する座標\r
+        * @return\r
+        * 点が矩形の中にあれば、trueを返します。\r
+        */\r
        public final boolean isInnerPoint(NyARIntPoint2d i_pos)\r
        {\r
                int x=i_pos.x-this.x;\r
@@ -163,10 +192,11 @@ public class NyARIntRect
                return (0<=x && x<this.w && 0<=y && y<this.h);\r
        }\r
        /**\r
-        * RECTがこのRECTの範囲内であるか判定します。\r
+        * この関数は、引数の矩形が、この矩形内にあるか判定します。\r
         * @param i_rect\r
-        * @param i_y\r
+        * 内側にあるか調べる矩形\r
         * @return\r
+        * 矩形が内側にあれば、trueを返します。\r
         */\r
        public final boolean isInnerRect(NyARIntRect i_rect)\r
        {\r
@@ -177,6 +207,19 @@ public class NyARIntRect
                int lh=ly+i_rect.h;\r
                return (0<=lx && lx<this.w && 0<=ly && ly<this.h && lw<=this.w && lh<=this.h);\r
        }\r
+       /**\r
+        * この関数は、引数で定義される矩形が、この矩形内にあるか判定します。\r
+        * @param i_x\r
+        * 内側にあるか調べる矩形の左上座標(X)\r
+        * @param i_y\r
+        * 内側にあるか調べる矩形の左上座標(Y)\r
+        * @param i_w\r
+        * 内側にあるか調べる矩形の幅\r
+        * @param i_h\r
+        * 内側にあるか調べる矩形の高さ\r
+        * @return\r
+        * 矩形が内側にあれば、trueを返します。\r
+        */\r
        public final boolean isInnerRect(int i_x,int i_y,int i_w,int i_h)\r
        {\r
                assert(i_w>=0 && i_h>=0);\r
@@ -187,11 +230,11 @@ public class NyARIntRect
                return (0<=lx && lx<this.w && 0<=ly && ly<this.h && lw<=this.w && lh<=this.h);\r
        }\r
        /**\r
-        * RECT1とRECT2の差分値を計算します。\r
-        * 差分値は、矩形同士の対角点2点(左上,右下)の距離の二乗の合計値です。\r
-        * @param i_rect1\r
+        * この関数は、2つの矩形の対角点同士の距離の二乗値を計算します。\r
         * @param i_rect2\r
+        * 比較する矩形\r
         * @return\r
+        * 左上、右下の点同士の距離の二乗値\r
         */\r
        public final int sqDiagonalPointDiff(NyARIntRect i_rect2)\r
        {\r
@@ -206,8 +249,9 @@ public class NyARIntRect
                return ret;\r
        }\r
        /**\r
-        * 対角線の二乗距離を返します。\r
+        * この関数は、矩形の対角距離の二乗距離を返します。\r
         * @return\r
+        * 矩形の対角距離の二乗値。\r
         */\r
        public final int getDiagonalSqDist()\r
        {\r
@@ -217,8 +261,9 @@ public class NyARIntRect
        }\r
 \r
        /**\r
-        * i_sourceの値をthisにセットします。\r
+        * この関数は、オブジェクトの値をインスタンスにセットします。\r
         * @param i_source\r
+        * セットする値を格納したオブジェクト。\r
         */\r
        public final void setValue(NyARIntRect i_source)\r
        {\r
index 3f5a4e1..ad2798f 100644 (file)
@@ -32,28 +32,57 @@ package jp.nyatla.nyartoolkit.core.types;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 \r
+/**\r
+ * このクラスは、整数型の距離値を格納します。\r
+ *\r
+ */\r
 public class NyARIntSize\r
 {\r
+       /** Y軸方向のサイズ値*/\r
        public int h;\r
+       /** X軸方向のサイズ値*/\r
        public int w;\r
+       /**\r
+        * コンストラクタです。\r
+        * 初期値を格納したインスタンスを生成します。\r
+        */\r
        public NyARIntSize()\r
        {\r
                this.w=0;\r
                this.h=0;\r
                return;         \r
        }\r
+       /**\r
+        * コンストラクタです。\r
+        * @param i_ref_object\r
+        * 引数値で初期化したインスタンスを生成します。\r
+        */\r
        public NyARIntSize(NyARIntSize i_ref_object)\r
        {\r
                this.w=i_ref_object.w;\r
                this.h=i_ref_object.h;\r
                return;         \r
        }\r
+       /**\r
+        * コンストラクタです。\r
+        * @param i_width\r
+        * {@link #w}に設定する値\r
+        * @param i_height\r
+        * {@link #h}に設定する値\r
+        */\r
        public NyARIntSize(int i_width,int i_height)\r
        {\r
                this.w=i_width;\r
                this.h=i_height;\r
                return;\r
        }\r
+       /**\r
+        * この関数は、引数値をインスタンスにセットします。\r
+        * @param i_width\r
+        * {@link #w}に設定する値\r
+        * @param i_height\r
+        * {@link #h}に設定する値\r
+        */\r
        public final void setValue(int i_w,int i_h)\r
        {\r
                this.w=i_w;\r
@@ -61,11 +90,13 @@ public class NyARIntSize
                return;\r
        }\r
        /**\r
-        * サイズが同一であるかを確認する。\r
-        * \r
+        * この関数は、サイズが引数値と同一であるかを確認します。\r
         * @param i_width\r
+        * 比較するサイズ値(W)\r
         * @param i_height\r
+        * 比較するサイズ値(H)\r
         * @return\r
+        * サイズが引数値と同じなら、trueを返します。\r
         * @throws NyARException\r
         */\r
        public final boolean isEqualSize(int i_width, int i_height)\r
@@ -77,11 +108,11 @@ public class NyARIntSize
        }\r
 \r
        /**\r
-        * サイズが同一であるかを確認する。\r
-        * \r
-        * @param i_width\r
-        * @param i_height\r
+        * この関数は、サイズが引数値と同一であるかを確認します。\r
+        * @param i_size\r
+        * 比較するサイズ値\r
         * @return\r
+        * サイズが引数値と同じなら、trueを返します。\r
         * @throws NyARException\r
         */\r
        public final boolean isEqualSize(NyARIntSize i_size)\r
@@ -92,68 +123,87 @@ public class NyARIntSize
                return false;\r
        }\r
        /**\r
-        * ã\82µã\82¤ã\82ºã\81\8cã\82µã\82¤ã\82ºå\80¤ã\81®ç¯\84å\9b²ã\81§ã\81\82ã\82\8bã\81\8bå\88¤å®\9aします。\r
+        * ã\81\93ã\81®é\96¢æ\95°ã\81¯ã\80\81å¼\95æ\95°å\80¤ã\81\8cã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹ã\81®ã\82µã\82¤ã\82ºã\82\88ã\82\8aã\82\82å°\8fã\81\95ã\81\84ã\81\8bã\82\92è¿\94します。\r
         * @param i_x\r
+        * 比較するサイズ値(W)\r
         * @param i_y\r
+        * 比較するサイズ値(H)\r
         * @return\r
+        * 引数値がインスタンスのサイズよりも小さければ、trueを返します。\r
+        * @throws NyARException\r
         */\r
        public final boolean isInnerSize(int i_x,int i_y)\r
        {\r
                return (i_x<=this.w && i_y<=this.h);\r
        }\r
        /**\r
-        * ã\82µã\82¤ã\82ºå\80¤ã\81\8cã\80\81ã\81\93ã\81®ã\82µã\82¤ã\82ºã\81®ç¯\84å\9b²å\86\85ã\81§ã\81\82ã\82\8bã\81\8bå\88¤å®\9aします。\r
+        * ã\81\93ã\81®é\96¢æ\95°ã\81¯ã\80\81å¼\95æ\95°å\80¤ã\81\8cã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹ã\81®ã\82µã\82¤ã\82ºã\82\88ã\82\8aã\82\82å°\8fã\81\95ã\81\84ã\81\8bã\82\92è¿\94します。\r
         * @param i_size\r
+        * 比較するサイズ値\r
         * @return\r
+        * 引数値がインスタンスのサイズよりも小さければ、trueを返します。\r
+        * @throws NyARException\r
         */\r
        public final boolean isInnerSize(NyARIntSize i_size)\r
        {\r
                return (i_size.w<=this.w && i_size.h<=this.h);\r
        }\r
        /**\r
-        * 点が、サイズの内部にあるか判定します。\r
+        * この関数は、座標がサイズの範囲内(0,0基点)よりも小さいかを返します。\r
         * @param i_point\r
+        * 調査する座標点\r
         * @return\r
+        * 引数値が範囲内ならば、trueを返します。\r
+        * @throws NyARException\r
         */\r
        public final boolean isInnerSize(NyARDoublePoint2d i_point)\r
        {\r
                return (i_point.x<this.w && i_point.y<this.h && 0<=i_point.x && 0<=i_point.y);\r
        }\r
        /**\r
-        * 点が、サイズの内部にあるか判定します。\r
+        * この関数は、座標がサイズの範囲内(0,0-w,hの矩形)にあるかを返します。\r
         * @param i_x\r
+        * 調査する座標点\r
         * @param i_y\r
+        * 調査する座標点\r
         * @return\r
+        * 引数値が範囲内ならば、trueを返します。\r
+        * @throws NyARException\r
         */\r
        public final boolean isInnerPoint(int i_x,int i_y)\r
        {\r
                return (i_x<this.w && i_y<this.h && 0<=i_x && 0<=i_y);\r
        }\r
        /**\r
-        * 点が、サイズの内部にあるか判定します。\r
-        * @param i_x\r
-        * @param i_y\r
+        * この関数は、座標がサイズの範囲内(0,0-w,hの矩形)にあるかを返します。\r
+        * @param i_pos\r
+        * 調査する座標点\r
         * @return\r
+        * 引数値が範囲内ならば、trueを返します。\r
+        * @throws NyARException\r
         */\r
        public final boolean isInnerPoint(NyARDoublePoint2d i_pos)\r
        {\r
                return (i_pos.x<this.w && i_pos.y<this.h && 0<=i_pos.x && 0<=i_pos.y);\r
        }\r
        /**\r
-        * 点が、サイズの内部にあるか判定します。\r
-        * @param i_x\r
-        * @param i_y\r
+        * この関数は、座標がサイズの範囲内(0,0-w,hの矩形)にあるかを返します。\r
+        * @param i_pos\r
+        * 調査する座標点\r
         * @return\r
-        */     \r
+        * 引数値が範囲内ならば、trueを返します。\r
+        * @throws NyARException\r
+        */\r
        public final boolean isInnerPoint(NyARIntPoint2d i_pos)\r
        {\r
                return (i_pos.x<this.w && i_pos.y<this.h && 0<=i_pos.x && 0<=i_pos.y);\r
        }\r
        /**\r
-        * 頂点セットの広がりを計算して格納する。\r
-        * この関数は、頂点セットを全て包括するサイズを計算します。\r
+        * この関数は、頂点集合を包括する矩形のサイズ値(幅、高さ)を計算して、インスタンスにセットします。\r
         * @param i_vertex\r
+        * 頂点集合を格納した配列\r
         * @param i_num_of_vertex\r
+        * 計算対象とする要素の数\r
         */\r
        public final void setAreaRect(NyARDoublePoint2d[] i_vertex,int i_num_of_vertex)\r
        {\r
@@ -176,6 +226,13 @@ public class NyARIntSize
                this.h=ymax-ymin+1;\r
                this.w=xmax-xmin+1;\r
        }\r
+       /**\r
+        * この関数は、頂点集合を包括する矩形のサイズ値(幅、高さ)を計算して、インスタンスにセットします。\r
+        * @param i_vertex\r
+        * 頂点集合を格納した配列\r
+        * @param i_num_of_vertex\r
+        * 計算対象とする要素の数\r
+        */     \r
        public final void setAreaRect(NyARIntPoint2d[] i_vertex,int i_num_of_vertex)\r
        {\r
                //エリアを求める。\r
index 7880eff..ebaa9ba 100644 (file)
@@ -32,15 +32,26 @@ package jp.nyatla.nyartoolkit.core.types;
 \r
 \r
 /**\r
- * 0=a*x+b*y+cのパラメータを格納します。\r
+ * このクラスは、0=a*x+b*y+cのパラメータを格納します。\r
  * x,yの増加方向は、x=L→R,y=B→Tです。 y軸が反転しているので注意してください。\r
  *\r
  */\r
 public class NyARLinear\r
 {\r
-       public double b;//係数b\r
-       public double a;//係数a\r
-       public double c;//切片\r
+       /** 直線式の係数 b*/\r
+       public double b;\r
+       /** 直線式の係数 a*/\r
+       public double a;\r
+       /** 直線式の係数 c*/\r
+       public double c;\r
+       \r
+       /**\r
+        * この関数は、指定サイズのオブジェクト配列を作ります。\r
+        * @param i_number\r
+        * 作成する配列の長さ\r
+        * @return\r
+        * 新しい配列。\r
+        */     \r
        public static NyARLinear[] createArray(int i_number)\r
        {\r
                NyARLinear[] ret=new NyARLinear[i_number];\r
@@ -49,7 +60,12 @@ public class NyARLinear
                        ret[i]=new NyARLinear();\r
                }\r
                return ret;\r
-       }       \r
+       }\r
+       /**\r
+        * この関数は、引数値からパラメータをインスタンスへコピーします。\r
+        * @param i_source\r
+        * コピー元のオブジェクト\r
+        */\r
        public final void copyFrom(NyARLinear i_source)\r
        {\r
                this.b=i_source.b;\r
@@ -58,10 +74,13 @@ public class NyARLinear
                return;\r
        }\r
        /**\r
-        * 2直線の交点を計算します。\r
+        * この関数は、直線の交点を計算します。\r
         * @param l_line_2\r
+        * 交点を計算する直線式\r
         * @param o_point\r
+        * 交点座標を格納するオブジェクト\r
         * @return\r
+        * 交点が求まればtrue\r
         */\r
        public final boolean crossPos(NyARLinear l_line_2,NyARDoublePoint2d o_point)\r
        {\r
@@ -74,12 +93,17 @@ public class NyARLinear
                return true;\r
        }\r
        /**\r
-        * 指定したパラメータの式との交点を得る\r
+        * この関数は、直線の交点を計算します\r
         * @param i_a\r
+        * 交点を求める直線式の係数a\r
         * @param i_b\r
+        * 交点を求める直線式の係数b\r
         * @param i_c\r
+        * 交点を求める直線式の係数c\r
         * @param o_point\r
+        * 交点座標を格納するオブジェクト\r
         * @return\r
+        * 交点が求まればtrue\r
         */\r
        public final boolean crossPos(double i_a,double i_b,double i_c,NyARDoublePoint2d o_point)\r
        {\r
@@ -91,6 +115,19 @@ public class NyARLinear
                o_point.y = (i_a * this.c - this.a * i_c) / w1;\r
                return true;\r
        }\r
+       /**\r
+        * この関数は、直線の交点を計算します。\r
+        * @param i_a\r
+        * 交点を求める直線式の係数a\r
+        * @param i_b\r
+        * 交点を求める直線式の係数b\r
+        * @param i_c\r
+        * 交点を求める直線式の係数c\r
+        * @param o_point\r
+        * 交点座標を格納するオブジェクト\r
+        * @return\r
+        * 交点が求まればtrue\r
+        */\r
        public final boolean crossPos(double i_a,double i_b,double i_c,NyARIntPoint2d o_point)\r
        {\r
                final double w1 = this.a * i_b - i_a * this.b;\r
@@ -102,9 +139,11 @@ public class NyARLinear
                return true;\r
        }\r
        /**\r
-        * 2直線が交差しているかを返します。\r
+        * この関数は、2直線が交差しているかを返します。\r
         * @param l_line_2\r
+        * 交差しているか確認するオブジェクト\r
         * @return\r
+        * 交差していればtrue\r
         */\r
        public final boolean isCross(NyARLinear l_line_2)\r
        {\r
@@ -113,31 +152,43 @@ public class NyARLinear
        }\r
        \r
        /**\r
-        * 2点を結ぶ直線の式を得る。この式は正規化されている。\r
+        * この関数は、2点を結ぶ直線式を計算して、インスタンスに格納します。\r
+        * 式の係数値は、正規化されます。\r
         * @param i_point1\r
+        * 点1\r
         * @param i_point2\r
+        * 点2\r
         * @return\r
+        * 直線式が求まれば、true\r
         */\r
        public final boolean makeLinearWithNormalize(NyARIntPoint2d i_point1,NyARIntPoint2d i_point2)\r
        {\r
                return makeLinearWithNormalize(i_point1.x,i_point1.y,i_point2.x,i_point2.y);\r
        }\r
        /**\r
-        * 2点を結ぶ直線の式を得る。この式は正規化されている。\r
+        * この関数は、2点を結ぶ直線式を計算して、インスタンスに格納します。\r
+        * 式の係数値は、正規化されます。\r
         * @param i_point1\r
+        * 点1\r
         * @param i_point2\r
+        * 点2\r
         * @return\r
+        * 直線式が求まれば、true\r
         */\r
        public final boolean makeLinearWithNormalize(NyARDoublePoint2d i_point1,NyARDoublePoint2d i_point2)\r
        {\r
                return makeLinearWithNormalize(i_point1.x,i_point1.y,i_point2.x,i_point2.y);\r
        }\r
        /**\r
-        * 2点を結ぶ直線の式を得る。この式は正規化されている。\r
+        * この関数は、2点を結ぶ直線式を計算して、インスタンスに格納します。\r
+        * 式の係数値は、正規化されます。\r
         * @param i_point1\r
+        * 点1\r
         * @param i_point2\r
+        * 点2\r
         * @return\r
-        */     \r
+        * 直線式が求まれば、true\r
+        */\r
        public final boolean makeLinearWithNormalize(double x1,double y1,double x2,double y2)\r
        {\r
                double dx=y2-y1;\r
@@ -153,11 +204,15 @@ public class NyARLinear
                return true;\r
        }\r
        /**\r
-        * 傾きと通過点を入力して、その直線式をセットする\r
+        * この関数は、傾きと通過点から直線式を計算して、インスタンスへセットします\r
         * @param i_dx\r
+        * Xの傾き\r
         * @param i_dy\r
+        * Yの傾き\r
         * @param i_x\r
+        * 通過点の座標X\r
         * @param i_y\r
+        * 通過点の座標Y\r
         */\r
        public final void setVector(double i_dx,double i_dy,double i_x,double i_y)\r
        {\r
@@ -166,6 +221,11 @@ public class NyARLinear
                this.c=(i_dx*i_y-i_dy*i_x);\r
                return;\r
        }\r
+       /**\r
+        * この関数は、{@link NyARVecLinear2d}を直線式に変換して、インスタンスへセットします。\r
+        * @param i_vector\r
+        * セットするオブジェクト\r
+        */\r
        public final void setVector(NyARVecLinear2d i_vector)\r
        {\r
                this.a= i_vector.dy;\r
@@ -173,6 +233,11 @@ public class NyARLinear
                this.c=(i_vector.dx*i_vector.y-i_vector.dy*i_vector.x);\r
                return;         \r
        }\r
+       /**\r
+        * この関数は、{@link NyARVecLinear2d}を正規化された直線式に変換して、インスタンスへセットします。\r
+        * @param i_vector\r
+        * セットするオブジェクト\r
+        */\r
        public final boolean setVectorWithNormalize(NyARVecLinear2d i_vector)\r
        {\r
                double dx=i_vector.dx;\r
@@ -188,7 +253,13 @@ public class NyARLinear
                return true;\r
        }\r
        /**\r
-        * i_x,i_yを通過する、i_linearの法線を計算して、格納します。\r
+        * この関数は、i_x,i_yを通過する、i_linearの法線を計算して、インスタンスへ格納します。\r
+        * @param i_x\r
+        * 通過点X\r
+        * @param i_y\r
+        * 通過点Y\r
+        * @param i_linear\r
+        * 法線を計算する直線式(この引数にはthisを指定できます。)\r
         */\r
        public final void normalLine(double i_x,double i_y,NyARLinear i_linear)\r
        {\r
@@ -199,12 +270,17 @@ public class NyARLinear
                this.c=-(lb*i_x-la*i_y);\r
        }\r
        /**\r
-        * i_x,i_yを通るこの直線の法線と、i_linearが交わる点を返します。\r
+        * この関数は、i_x,i_yを通るこの直線の法線と、i_linearが交わる点を返します。\r
         * @param i_x\r
+        * 法線が通過する点X\r
         * @param i_y\r
+        * 法線が通過する点Y\r
         * @param i_linear\r
+        * 交点を計算する直線式\r
         * @param o_point\r
+        * 交点を返却するオブジェクト\r
         * @return\r
+        * 交点が求まれば、trueを返します。\r
         */\r
        public final boolean normalLineCrossPos(double i_x,double i_y,NyARLinear i_linear,NyARDoublePoint2d o_point)\r
        {\r
@@ -221,38 +297,42 @@ public class NyARLinear
                o_point.y = ((la * i_linear.c - i_linear.a * lc) / w1);\r
                return true;\r
        }\r
-       /**\r
-        * i_x,i_yを通るこの直線の法線上での、この直線とi_linearの距離の二乗値を返します。\r
-        * i_x,i_yに直線上の点を指定すると、この直線の垂線上での、もう一方の直線との距離の二乗値が得られます。\r
-        * @param i_linear\r
-        * @param i_x\r
-        * @param i_y\r
-        * @param o_point\r
-        * @return\r
-        * 交点が無い場合、無限大を返します。\r
-        *//*\r
-       public final double sqDistWithLinear(NyARLinear i_linear, double i_x,double i_y)\r
-       {\r
-               //thisを法線に変換\r
-               double la=this.b;\r
-               double lb=-this.a;\r
-               double lc=-(la*i_x+lb*i_y);\r
-               //交点を計算\r
-               final double w1 = i_linear.a * lb - la * i_linear.b;\r
-               if (w1 == 0.0) {\r
-                       return Double.POSITIVE_INFINITY;\r
-               }\r
-               double x=i_x-((i_linear.b * lc - lb * i_linear.c) / w1);\r
-               double y=i_y-((la * i_linear.c - i_linear.a * lc) / w1);\r
-               return x*x+y*y;\r
-       }*/\r
+//     /**\r
+//      * i_x,i_yを通るこの直線の法線上での、この直線とi_linearの距離の二乗値を返します。\r
+//      * i_x,i_yに直線上の点を指定すると、この直線の垂線上での、もう一方の直線との距離の二乗値が得られます。\r
+//      * @param i_linear\r
+//      * @param i_x\r
+//      * @param i_y\r
+//      * @param o_point\r
+//      * @return\r
+//      * 交点が無い場合、無限大を返します。\r
+//      */\r
+//     public final double sqDistWithLinear(NyARLinear i_linear, double i_x,double i_y)\r
+//     {\r
+//             //thisを法線に変換\r
+//             double la=this.b;\r
+//             double lb=-this.a;\r
+//             double lc=-(la*i_x+lb*i_y);\r
+//             //交点を計算\r
+//             final double w1 = i_linear.a * lb - la * i_linear.b;\r
+//             if (w1 == 0.0) {\r
+//                     return Double.POSITIVE_INFINITY;\r
+//             }\r
+//             double x=i_x-((i_linear.b * lc - lb * i_linear.c) / w1);\r
+//             double y=i_y-((la * i_linear.c - i_linear.a * lc) / w1);\r
+//             return x*x+y*y;\r
+//     }\r
 \r
        /**\r
-        * この矩形を任意の範囲でクリッピングしたときの2頂点を返します。\r
+        * この関数は、直線を0,0基点(左上)の矩形でクリッピングしたときの、端点を計算します。\r
         * @param i_width\r
+        * 矩形の幅\r
         * @param i_height\r
+        * 矩形の高さ\r
         * @param o_point\r
+        * 端点を返すオブジェクト配列。2要素である必要があります。\r
         * @return\r
+        * 端点が求まればtrue\r
         */\r
        public final boolean makeSegmentLine(int i_width,int i_height,NyARIntPoint2d[] o_point)\r
        {       \r
@@ -291,15 +371,21 @@ public class NyARLinear
                        }\r
                }\r
                return false;\r
-       }       \r
+       }\r
        /**\r
-        * この直線を、任意の矩形でクリッピングしたときに得られる線分の2頂点を返します。\r
+        * この関数は、直線を矩形でクリッピングしたときの、端点を計算します。\r
         * @param i_left\r
+        * 矩形の左上座標(X)\r
         * @param i_top\r
+        * 矩形の左上座標(Y)\r
         * @param i_width\r
+        * 矩形の幅\r
         * @param i_height\r
+        * 矩形の高さ\r
         * @param o_point\r
+        * 端点を返すオブジェクト配列。2要素である必要があります。\r
         * @return\r
+        * 端点が求まればtrue\r
         */\r
        public final boolean makeSegmentLine(int i_left,int i_top,int i_width,int i_height,NyARIntPoint2d[] o_point)\r
        {       \r
@@ -342,13 +428,15 @@ public class NyARLinear
                return false;\r
        }\r
        /**\r
-        * 直線と、i_sp1とi_sp2の作る線分との二乗距離値の合計を返します。計算方法は、線分の2端点を通過する直線の法線上での、2端点と直線の距離の合計です。\r
+        * この関数は、この直線と、i_sp1とi_sp2の作る線分との、二乗距離値の合計を返します。\r
+        * 計算方法は、線分の端点を通過する直線の法線上での、端点と直線の距離の合計です。\r
         * 線分と直線の類似度を判定する数値になります。\r
         * @param i_sp1\r
+        * 線分の端点1\r
         * @param i_sp2\r
-        * @param o_point\r
+        * 線分の端点2\r
         * @return\r
-        * 距離が取れないときは無限大です。\r
+        * 二乗距離値の合計。距離が取れないときは無限大です。\r
         */\r
        public final double sqDistBySegmentLineEdge(NyARDoublePoint2d i_sp1,NyARDoublePoint2d i_sp2)\r
        {\r
@@ -374,12 +462,15 @@ public class NyARLinear
                y = ((la * this.c - this.a * lc) / w1)-i_sp2.y;\r
 \r
                return sqdist+x*x+y*y;\r
-       }       \r
+       }\r
        /**\r
-        * 最小二乗法を使用して直線を計算します。\r
+        * この関数は、頂点群から最小二乗法を使用して直線を計算します。\r
         * @param i_points\r
+        * 頂点群を格納した配列。\r
         * @param i_number_of_data\r
+        * 計算対象の頂点群の数\r
         * @return\r
+        * 計算に成功すると、trueを返します。\r
         */\r
        public boolean leastSquares(NyARDoublePoint2d[] i_points,int i_number_of_data)\r
        {\r
index 6064bf7..a6902a6 100644 (file)
@@ -26,15 +26,26 @@ package jp.nyatla.nyartoolkit.core.types;
 \r
 \r
 /**\r
- * 定点と傾きのパラメータで、直線を表現します。\r
- *\r
+ * このクラスは、通過点とX,Yの変化量で、直線を定義します。\r
  */\r
 public class NyARVecLinear2d\r
 {\r
+       /** 直線の通過点(X)*/\r
        public double x;\r
+       /** 直線の通過点(Y)*/\r
        public double y;\r
+       /** x方向の直線の変化量*/\r
        public double dx;\r
+       /** y方向の直線の変化量*/\r
        public double dy;\r
+       \r
+       /**\r
+        * この関数は、指定サイズのオブジェクト配列を作ります。\r
+        * @param i_number\r
+        * 作成する配列の長さ\r
+        * @return\r
+        * 新しい配列。\r
+        */     \r
        public static NyARVecLinear2d[] createArray(int i_length)\r
        {\r
                NyARVecLinear2d[] r=new NyARVecLinear2d[i_length];\r
@@ -44,9 +55,10 @@ public class NyARVecLinear2d
                return r;\r
        }\r
        /**\r
-        * 法線ベクトルを計算します。\r
+        * この関数は、法線を計算します。\r
+        * 通過点は変更しません。\r
         * @param i_src\r
-        * å\85\83ã\81®ã\83\99ã\82¯ã\83\88ã\83«を指定します。この値には、thisを指定できます。\r
+        * å\85\83ã\81®ã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹を指定します。この値には、thisを指定できます。\r
         */\r
        public final void normalVec(NyARVecLinear2d i_src)\r
        {\r
@@ -54,6 +66,11 @@ public class NyARVecLinear2d
                this.dx=i_src.dy;\r
                this.dy=-w;\r
        }\r
+       /**\r
+        * この関数は、オブジェクトの値をインスタンスにセットします。\r
+        * @param i_value\r
+        * コピー元のオブジェクト\r
+        */\r
        public final void setValue(NyARVecLinear2d i_value)\r
        {\r
                this.dx=i_value.dx;\r
@@ -62,9 +79,11 @@ public class NyARVecLinear2d
                this.y=i_value.y;\r
        }\r
        /**\r
-        * このベクトルと指定した直線が作るCos値を返します。\r
+        * この関数は、この直線と引数の直線とが作るCos値を返します。\r
         * @param i_v1\r
+        * 直線を格納したオブジェクト\r
         * @return\r
+        * 2直線のCOS値(radian)\r
         */\r
        public final double getVecCos(NyARVecLinear2d i_v1)\r
        {\r
@@ -75,58 +94,83 @@ public class NyARVecLinear2d
                double d=(x1*x2+y1*y2)/Math.sqrt((x1*x1+y1*y1)*(x2*x2+y2*y2));\r
                return d;\r
        }\r
+       /**\r
+        * この関数は、この直線と引数の直線とが作るCos値の絶対値を返します。\r
+        * @param i_v1\r
+        * 直線を格納したオブジェクト\r
+        * @return\r
+        * 2直線のCOS値の絶対値(radian)\r
+        */\r
        public final double getAbsVecCos(NyARVecLinear2d i_v1)\r
        {\r
-               double x1=i_v1.dx;\r
-               double y1=i_v1.dy;\r
-               double x2=this.dx;\r
-               double y2=this.dy;\r
-               double d=(x1*x2+y1*y2)/Math.sqrt((x1*x1+y1*y1)*(x2*x2+y2*y2));\r
+               double d=getVecCos(i_v1);\r
                return d>=0?d:-d;\r
        }\r
        /**\r
-        * このベクトルと指定したベクトルが作るCos値を返します。\r
+        * この関数は、この直線とベクトルが作るCos値を返します。\r
         * @param i_dx\r
+        * ベクトルのX成分\r
         * @param i_dy\r
+        * ベクトルのY成分\r
         * @return\r
+        * 2直線のCOS値(radian)\r
         */\r
        public final double getVecCos(double i_dx,double i_dy)\r
        {\r
                double x1=this.dx;\r
                double y1=this.dy;\r
-               double d=(x1*i_dx+y1*i_dy)/Math.sqrt((x1*x1+y1*y1)*(i_dx*i_dx+i_dy*i_dy));\r
-               return d;\r
+               return (x1*i_dx+y1*i_dy)/Math.sqrt((x1*x1+y1*y1)*(i_dx*i_dx+i_dy*i_dy));\r
        }\r
-       public final double getVecCos(NyARDoublePoint2d i_pos1,NyARDoublePoint2d i_pos2)\r
+       /**\r
+        * この関数は、この直線とベクトルが作るCos値の絶対値を返します。\r
+        * @param i_v2_x\r
+        * ベクトルのX成分\r
+        * @param i_v2_y\r
+        * ベクトルのY成分\r
+        * @return\r
+        * 2直線のCOS値の絶対値(radian)\r
+        */\r
+       public final double getAbsVecCos(double i_v2_x,double i_v2_y)\r
        {\r
-               double d=getAbsVecCos(i_pos2.x-i_pos1.x,i_pos2.y-i_pos1.y);\r
+               double d=getVecCos(i_v2_x,i_v2_y);\r
                return d>=0?d:-d;\r
        }       \r
-       public final double getAbsVecCos(double i_v2_x,double i_v2_y)\r
+       /**\r
+        * この関数は、この直線と線分が作るCos値を返します。\r
+        * @param i_pos1\r
+        * 線分の端点1\r
+        * @param i_pos2\r
+        * 線分の端点2\r
+        * @return\r
+        * 2直線のCOS値(radian)\r
+        */\r
+       public final double getVecCos(NyARDoublePoint2d i_pos1,NyARDoublePoint2d i_pos2)\r
        {\r
-               double x1=this.dx;\r
-               double y1=this.dy;\r
-               double d=(x1*i_v2_x+y1*i_v2_y)/Math.sqrt((x1*x1+y1*y1)*(i_v2_x*i_v2_x+i_v2_y*i_v2_y));\r
-               return d>=0?d:-d;\r
-       }\r
+               return getVecCos(i_pos2.x-i_pos1.x,i_pos2.y-i_pos1.y);\r
+       }       \r
+\r
        /**\r
-        * このベクトルと、i_pos1-&lt;i_pos2を結ぶ線分が作るcos値の絶対値を返します。\r
+        * この関数は、この直線と線分が作るCos値の絶対値を返します。\r
         * @param i_pos1\r
+        * 線分の端点1\r
         * @param i_pos2\r
+        * 線分の端点2\r
         * @return\r
+        * 2直線のCOS値の絶対値(radian)\r
         */\r
        public final double getAbsVecCos(NyARDoublePoint2d i_pos1,NyARDoublePoint2d i_pos2)\r
        {\r
-               double d=getAbsVecCos(i_pos2.x-i_pos1.x,i_pos2.y-i_pos1.y);\r
-               return d>=0?d:-d;\r
+               return getAbsVecCos(i_pos2.x-i_pos1.x,i_pos2.y-i_pos1.y);\r
        }\r
        \r
        /**\r
-        * 交点を求めます。\r
+        * この関数は、直線との交点を求めます。\r
         * @param i_vector1\r
-        * @param i_vector2\r
+        * 交点を求める直線\r
         * @param o_point\r
+        * 交点座標を得るオブジェクト。\r
         * @return\r
+        * 交点が求まると、trueを返します。\r
         */\r
        public final boolean crossPos(NyARVecLinear2d i_vector1,NyARDoublePoint2d o_point)\r
        {\r
@@ -145,13 +189,15 @@ public class NyARVecLinear2d
                return true;\r
        }\r
        /**\r
-        * 直線と、i_sp1とi_sp2の作る線分との二乗距離値の合計を返します。\r
-        * 線分と直線の類似度を\r
+        * この関数は、この直線と、i_sp1とi_sp2の作る線分との、二乗距離値の合計を返します。\r
+        * 計算方法は、線分の端点を通過する直線の法線上での、端点と直線の距離の合計です。\r
+        * 線分と直線の類似度を判定する数値になります。\r
         * @param i_sp1\r
+        * 線分の端点1\r
         * @param i_sp2\r
-        * @param o_point\r
+        * 線分の端点2\r
         * @return\r
-        * 距離が取れないときは無限大です。\r
+        * 二乗距離値の合計。距離が取れないときは無限大です。\r
         */\r
        public final double sqDistBySegmentLineEdge(NyARDoublePoint2d i_sp1,NyARDoublePoint2d i_sp2)\r
        {\r
@@ -184,10 +230,16 @@ public class NyARVecLinear2d
        }\r
 \r
        /**\r
-        * i_lineの直線をセットします。x,yの値は、(i_x,i_y)を通過するi_lineの法線とi_lineの交点をセットします。\r
+        * この関数は、i_lineの直線を、インスタンスにセットします。\r
+        * {@link #x},{@link #y}の値は、(i_x,i_y)を通過するi_lineの法線とi_lineの交点をセットします。\r
         * @param i_line\r
+        * セットする直線式\r
         * @param i_x\r
+        * {@link #x},{@link #y}を確定するための、法線の通過点\r
         * @param i_y\r
+        * {@link #x},{@link #y}を確定するための、法線の通過点\r
+        * @return\r
+        * セットに成功すると、trueを返します。\r
         */\r
        public boolean setLinear(NyARLinear i_line,double i_x,double i_y)\r
        {\r
@@ -206,11 +258,13 @@ public class NyARVecLinear2d
                return true;\r
        }\r
        /**\r
-        * 点群から最小二乗法で直線を計算してセットします。\r
-        * 通過点x,yは、点群の中央値を通過する、算出された直線の法線との交点です。\r
+        * この関数は、頂点群から最小二乗法を使用して直線を計算します。\r
         * @param i_points\r
+        * 頂点群を格納した配列。\r
         * @param i_number_of_data\r
+        * 計算対象の頂点群の数\r
         * @return\r
+        * 計算に成功すると、trueを返します。\r
         */\r
        public final boolean leastSquares(NyARDoublePoint2d[] i_points,int i_number_of_data)\r
        {\r
@@ -240,10 +294,13 @@ public class NyARVecLinear2d
                return true;\r
        }\r
        /**\r
-        * 正規化したベクトルを出力する{@link #leastSquares}です。\r
+        * この関数は、正規化したベクトルを出力する、{@link #leastSquares}です。\r
         * @param i_points\r
+        * 頂点群を格納した配列。\r
         * @param i_number_of_data\r
+        * 計算対象の頂点群の数\r
         * @return\r
+        * 計算に成功すると、trueを返します。\r
         */\r
        public final boolean leastSquaresWithNormalize(NyARDoublePoint2d[] i_points,int i_number_of_data)\r
        {\r
index bd44fba..0ed4068 100644 (file)
  * \r
  */\r
 package jp.nyatla.nyartoolkit.core.types.matrix;\r
-\r
+/**\r
+ * このインタフェイスは、行列クラスに共通な関数を定義します。\r
+ */\r
 public interface INyARDoubleMatrix\r
 {\r
        /**\r
-        * 配列の内容を行列に設定する\r
-        * 遅いので余り使わないでね\r
+        * この関数は、配列の内容を行列にセットします\r
+        * 実装クラスでは、配列の内容をインスタンスにセットする処理を実装してください\r
         * @param o_value\r
+        * セットする配列。\r
         */\r
        public void setValue(double[] i_value);\r
        /**\r
-        * 行列の内容を配列に返す。\r
-        * 遅いので余り使わないでね\r
+        * この関数は、配列の内容を行列に返します。\r
+        * 実装クラスでは、インスタンスの内容を配列に返す処理を実装してください\r
         * @param o_value\r
+        * 値を受け取る配列\r
         */\r
        public void getValue(double[] o_value);\r
 \r
index b44f638..3e6ba94 100644 (file)
  * \r
  */\r
 package jp.nyatla.nyartoolkit.core.types.matrix;\r
-\r
+/**\r
+ * このクラスは、2x2行列を格納します。\r
+ */\r
 public class NyARDoubleMatrix22 implements INyARDoubleMatrix\r
 {\r
+       /** 行列の要素値です。*/\r
        public double m00;\r
+       /** 行列の要素値です。*/\r
        public double m01;\r
+       /** 行列の要素値です。*/\r
        public double m10;\r
+       /** 行列の要素値です。*/\r
        public double m11;\r
        /**\r
-        * 遅いからあんまり使わないでね\r
+        * この関数は、要素数4の配列を、行列にセットします\r
         */\r
        public void setValue(double[] i_value)\r
        {\r
@@ -42,7 +48,7 @@ public class NyARDoubleMatrix22 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * 遅いからあんまり使わないでね\r
+        * この関数は、要素数4の配列に、行列の内容をコピーします\r
         */\r
        public void getValue(double[] o_value)\r
        {\r
@@ -52,6 +58,13 @@ public class NyARDoubleMatrix22 implements INyARDoubleMatrix
                o_value[4]=this.m11;\r
                return;\r
        }\r
+       /**\r
+        * この関数は、逆行列を計算して、インスタンスにセットします。\r
+        * @param i_src\r
+        * 逆行列を計算するオブジェクト。thisを指定できます。\r
+        * @return\r
+        * 逆行列を得られると、trueを返します。\r
+        */\r
        public boolean inverse(NyARDoubleMatrix22 i_src)\r
        {\r
                final double a11,a12,a21,a22;\r
index 04dfd2a..e35fbaa 100644 (file)
  */\r
 package jp.nyatla.nyartoolkit.core.types.matrix;\r
 \r
-import jp.nyatla.nyartoolkit.*;\r
 import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;\r
-\r
+/**\r
+ * このクラスは、3x3行列を格納します。\r
+ */\r
 public class NyARDoubleMatrix33 implements INyARDoubleMatrix\r
 {\r
+       /** 行列の要素値です。*/\r
        public double m00;\r
+       /** 行列の要素値です。*/\r
        public double m01;\r
+       /** 行列の要素値です。*/\r
        public double m02;\r
+       /** 行列の要素値です。*/\r
        public double m10;\r
+       /** 行列の要素値です。*/\r
        public double m11;\r
+       /** 行列の要素値です。*/\r
        public double m12;\r
+       /** 行列の要素値です。*/\r
        public double m20;\r
+       /** 行列の要素値です。*/\r
        public double m21;\r
+       /** 行列の要素値です。*/\r
        public double m22;\r
+       /**\r
+        * この関数は、オブジェクトの配列を生成して返します。\r
+        * @param i_number\r
+        * 配列の長さ\r
+        * @return\r
+        * 新しいオブジェクト配列\r
+        */\r
        public static NyARDoubleMatrix33[] createArray(int i_number)\r
        {\r
                NyARDoubleMatrix33[] ret=new NyARDoubleMatrix33[i_number];\r
@@ -48,8 +65,8 @@ public class NyARDoubleMatrix33 implements INyARDoubleMatrix
                return ret;\r
        }\r
        /**\r
-        * 遅いからあんまり使わないでね\r
-        */\r
+        * この関数は、要素数9の配列を、行列にセットします\r
+        */     \r
        public void setValue(double[] i_value)\r
        {\r
                this.m00=i_value[0];\r
@@ -63,6 +80,11 @@ public class NyARDoubleMatrix33 implements INyARDoubleMatrix
                this.m22=i_value[8];\r
                return;\r
        }\r
+       /**\r
+        * この関数は、オブジェクトの内容をインスタンスにコピーします。\r
+        * @param i_value\r
+        * コピー元のオブジェクト\r
+        */\r
        public void setValue(NyARDoubleMatrix33 i_value)\r
        {\r
                this.m00=i_value.m00;\r
@@ -77,7 +99,7 @@ public class NyARDoubleMatrix33 implements INyARDoubleMatrix
                return;\r
        }       \r
        /**\r
-        * 遅いからあんまり使わないでね\r
+        * この関数は、要素数9の配列に、行列の内容をコピーします\r
         */\r
        public void getValue(double[] o_value)\r
        {\r
@@ -92,6 +114,13 @@ public class NyARDoubleMatrix33 implements INyARDoubleMatrix
                o_value[8]=this.m22;\r
                return;\r
        }\r
+       /**\r
+        * この関数は、逆行列を計算して、インスタンスにセットします。\r
+        * @param i_src\r
+        * 逆行列を計算するオブジェクト。thisを指定できます。\r
+        * @return\r
+        * 逆行列を得られると、trueを返します。\r
+        */     \r
        public boolean inverse(NyARDoubleMatrix33 i_src)\r
        {\r
                final double a11,a12,a13,a21,a22,a23,a31,a32,a33;\r
@@ -133,8 +162,10 @@ public class NyARDoubleMatrix33 implements INyARDoubleMatrix
                return true;\r
        }\r
        /**\r
-        * この関数は、0-PIの間で値を返します。\r
+        * この関数は、行列を回転行列として、ZXY系の角度値を計算します。\r
         * @param o_out\r
+        * 角度値を受け取るオブジェクトです。\r
+        * 角度値の範囲は、0-PIです。\r
         */\r
        public final void getZXYAngle(NyARDoublePoint3d o_out)\r
        {\r
@@ -153,11 +184,25 @@ public class NyARDoubleMatrix33 implements INyARDoubleMatrix
                        o_out.y = Math.atan2(-this.m20, this.m22);\r
                }\r
        }\r
+       /**\r
+        * この関数は、行列を回転行列として、ZXY系の角度値をセットします。\r
+        * @param i_angle\r
+        * セットする角度値です。\r
+        */     \r
        public final void setZXYAngle(NyARDoublePoint3d i_angle)\r
        {\r
                setZXYAngle(i_angle.x,i_angle.y,i_angle.z);\r
                return;\r
        }\r
+       /**\r
+        * この関数は、行列を回転行列として、ZXY系の角度値をセットします。\r
+        * @param i_x\r
+        * X軸の角度値\r
+        * @param i_y\r
+        * X軸の角度値\r
+        * @param i_z\r
+        * X軸の角度値\r
+        */\r
        public final void setZXYAngle(final double i_x, final double i_y, final double i_z)\r
        {\r
                final double sina = Math.sin(i_x);\r
@@ -178,16 +223,28 @@ public class NyARDoubleMatrix33 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * 回転行列を適応して座標変換します。\r
-        * @param i_angle\r
+        * この関数は、3次元座標を座標変換します。\r
+        * @param i_position\r
+        * 変換する三次元座標\r
         * @param o_out\r
+        * 変換後の座標を受け取るオブジェクト\r
         */\r
        public final void transformVertex(NyARDoublePoint3d i_position,NyARDoublePoint3d o_out)\r
        {\r
                transformVertex(i_position.x,i_position.y,i_position.z,o_out);\r
                return;\r
        }\r
-       \r
+       /**\r
+        * この関数は、3次元座標を座標変換します。\r
+        * @param i_x\r
+        * 変換する三次元座標(X)\r
+        * @param i_y\r
+        * 変換する三次元座標(Y)\r
+        * @param i_z\r
+        * 変換する三次元座標(Z)\r
+        * @param o_out\r
+        * 変換後の座標を受け取るオブジェクト\r
+        */\r
        public final void transformVertex(double i_x,double i_y,double i_z,NyARDoublePoint3d o_out)\r
        {\r
                o_out.x=this.m00*i_x+this.m01*i_y+this.m02*i_z;\r
index 1f05cf9..7773d68 100644 (file)
@@ -26,18 +26,33 @@ package jp.nyatla.nyartoolkit.core.types.matrix;
 \r
 public class NyARDoubleMatrix34 implements INyARDoubleMatrix\r
 {\r
+       /** 行列の要素値です。*/\r
        public double m00;\r
+       /** 行列の要素値です。*/\r
        public double m01;\r
+       /** 行列の要素値です。*/\r
        public double m02;\r
+       /** 行列の要素値です。*/\r
        public double m03;\r
+       /** 行列の要素値です。*/\r
        public double m10;\r
+       /** 行列の要素値です。*/\r
        public double m11;\r
+       /** 行列の要素値です。*/\r
        public double m12;\r
+       /** 行列の要素値です。*/\r
        public double m13;\r
+       /** 行列の要素値です。*/\r
        public double m20;\r
+       /** 行列の要素値です。*/\r
        public double m21;\r
+       /** 行列の要素値です。*/\r
        public double m22;\r
+       /** 行列の要素値です。*/\r
        public double m23;\r
+       /**\r
+        * この関数は、要素数12の配列を、行列にセットします。\r
+        */             \r
        public void setValue(double[] i_value)\r
        {\r
                this.m00=i_value[0];\r
@@ -54,6 +69,11 @@ public class NyARDoubleMatrix34 implements INyARDoubleMatrix
                this.m23=i_value[11];\r
                return;\r
        }\r
+       /**\r
+        * この関数は、オブジェクトの内容をインスタンスにコピーします。\r
+        * @param i_value\r
+        * コピー元のオブジェクト\r
+        */     \r
        public void setValue(NyARDoubleMatrix34 i_value)\r
        {\r
                this.m00=i_value.m00;\r
@@ -70,6 +90,9 @@ public class NyARDoubleMatrix34 implements INyARDoubleMatrix
                this.m23=i_value.m23;\r
                return;\r
        }\r
+       /**\r
+        * この関数は、要素数12の配列に、行列の内容をコピーします。\r
+        */     \r
        public void getValue(double[] o_value)\r
        {\r
                o_value[0]=this.m00;\r
index 52e3aea..0f746f7 100644 (file)
@@ -30,22 +30,45 @@ import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;
 \r
 public class NyARDoubleMatrix44 implements INyARDoubleMatrix\r
 {\r
+       /** 行列の要素値です。*/\r
        public double m00;\r
+       /** 行列の要素値です。*/\r
        public double m01;\r
+       /** 行列の要素値です。*/\r
        public double m02;\r
+       /** 行列の要素値です。*/\r
        public double m03;\r
+       /** 行列の要素値です。*/\r
        public double m10;\r
+       /** 行列の要素値です。*/\r
        public double m11;\r
+       /** 行列の要素値です。*/\r
        public double m12;\r
+       /** 行列の要素値です。*/\r
        public double m13;\r
+       /** 行列の要素値です。*/\r
        public double m20;\r
+       /** 行列の要素値です。*/\r
        public double m21;\r
+       /** 行列の要素値です。*/\r
        public double m22;\r
+       /** 行列の要素値です。*/\r
        public double m23;\r
+       /** 行列の要素値です。*/\r
        public double m30;\r
+       /** 行列の要素値です。*/\r
        public double m31;\r
+       /** 行列の要素値です。*/\r
        public double m32;\r
+       /** 行列の要素値です。*/\r
        public double m33;\r
+       /**\r
+        * この関数は、オブジェクトの配列を生成して返します。\r
+        * @param i_number\r
+        * 配列の長さ\r
+        * @return\r
+        * 新しいオブジェクト配列\r
+        */     \r
        public static NyARDoubleMatrix44[] createArray(int i_number)\r
        {\r
                NyARDoubleMatrix44[] ret=new NyARDoubleMatrix44[i_number];\r
@@ -56,7 +79,8 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                return ret;\r
        }\r
        /**\r
-        * 配列の内容をセットします。順番は、00,01,02,03,10...の順です。\r
+        * この関数は、要素数16の配列を、行列にセットします。\r
+        * 00,01,02,03,10...の順です。\r
         */\r
        public void setValue(double[] i_value)\r
        {\r
@@ -79,8 +103,9 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * i_valueの内容を、このインスタンスにセットします。\r
+        * この関数は、オブジェクトの内容をインスタンスにコピーします。\r
         * @param i_value\r
+        * コピー元のオブジェクト\r
         */\r
        public void setValue(NyARDoubleMatrix44 i_value)\r
        {\r
@@ -103,8 +128,9 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * 行列の内容を配列に出力します。順番は、00,01,02,03,10...の順です。\r
-        */\r
+        * この関数は、要素数16の配列に、行列の内容をコピーします。\r
+        * 順番は、00,01,02,03,10...の順です。\r
+        */     \r
        public void getValue(double[] o_value)\r
        {\r
                o_value[ 0]=this.m00;\r
@@ -126,8 +152,10 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * 行列の内容を転置してから配列に出力します。\r
+        * この関数は、要素数16の配列に、行列の内容を転置してからコピーします。\r
         * 順番は、00,10,20,30,01...の順です。\r
+        * @param o_value\r
+        * 値を受け取る配列\r
         */     \r
        public void getValueT(double[] o_value)\r
        {\r
@@ -150,9 +178,11 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * 逆行列を計算して、i_srcのthisへ格納します。i_srcにはthisも指定可能です。\r
+        * この関数は、逆行列を計算して、インスタンスにセットします。\r
         * @param i_src\r
+        * 逆行列を計算するオブジェクト。thisを指定できます。\r
         * @return\r
+        * 逆行列を得られると、trueを返します。\r
         */\r
        public boolean inverse(NyARDoubleMatrix44 i_src)\r
        {\r
@@ -240,13 +270,17 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                \r
                return true;\r
        }\r
-       \r
        /**\r
-        * 行列を姿勢変換行列として、3次元座標を座標変換します。4列目は1で仮定します。\r
+        * この関数は、3次元座標を座標変換します。\r
+        * 4列目は1と仮定します。\r
         * @param i_x\r
+        * 変換する三次元座標(X)\r
         * @param i_y\r
+        * 変換する三次元座標(Y)\r
         * @param i_z\r
+        * 変換する三次元座標(Z)\r
         * @param o_out\r
+        * 変換後の座標を受け取るオブジェクト\r
         */\r
        public final void transform3d(double i_x,double i_y,double i_z,NyARDoublePoint3d o_out)\r
        {\r
@@ -255,21 +289,23 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                o_out.z=this.m20*i_x+this.m21*i_y+this.m22*i_z+this.m23;\r
                return;\r
        }\r
-       \r
        /**\r
-        * 行列を姿勢変換行列として、3次元座標を座標変換します。\r
-        * i_inとo_outには同一なインスタンスを指定できます。\r
+        * この関数は、3次元座標を座標変換します。\r
+        * 4列目は1と仮定します。\r
         * @param i_in\r
+        * 返還前する座標値\r
         * @param o_out\r
-        */\r
+        * 変換後の座標を受け取るオブジェクト\r
+        */     \r
        public final void transform3d(NyARDoublePoint3d i_in,NyARDoublePoint3d o_out)\r
        {\r
                transform3d(i_in.x,i_in.y,i_in.z,o_out);\r
        }\r
        /**\r
-        * 行列を姿勢行列として、ZXY系の角度値を返します。\r
-        * この関数は、0-PIの間で値を返します。\r
+        * この関数は、行列の回転成分から、ZXY系の角度値を計算します。\r
         * @param o_out\r
+        * 角度値を受け取るオブジェクトです。\r
+        * 角度値の範囲は、0-PIです。\r
         */\r
        public final void getZXYAngle(NyARDoublePoint3d o_out)\r
        {\r
@@ -289,9 +325,12 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                }\r
        }\r
        /**\r
-        * 行列の掛け算を実行して、結果を格納します。i_mat_lとi_mat_rには、thisを指定しないでください。\r
+        * この関数は、行列同士の掛け算をして、インスタンスに格納します。\r
+        * i_mat_lとi_mat_rには、thisを指定しないでください。\r
         * @param i_mat_l\r
+        * 左成分の行列\r
         * @param i_mat_r\r
+        * 右成分の行列\r
         */\r
        public final void mul(NyARDoubleMatrix44 i_mat_l,NyARDoubleMatrix44 i_mat_r)\r
        {\r
@@ -319,7 +358,7 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * この行列を単位行列にします。\r
+        * この関数は、行列を単位行列にします。\r
         */\r
        public final void identity()\r
        {\r
@@ -328,8 +367,9 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * 行列に、右手系のX軸回転を設定します。\r
+        * この関数は、行列に右手系のX軸回転を設定します。\r
         * @param i_radian\r
+        * 設定するX回転角(radian)\r
         */\r
        public final void setRotateX(double i_radian)\r
        {\r
@@ -343,8 +383,9 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * 行列に、右手系のY軸回転を設定します。\r
+        * この関数は、行列に右手系のY軸回転を設定します。\r
         * @param i_radian\r
+        * 設定するY回転角(radian)\r
         */\r
        public final void setRotateY(double i_radian)\r
        {\r
@@ -357,8 +398,9 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                this.m22=c;\r
        }       \r
        /**\r
-        * 行列に、右手系のZ軸回転を設定します。\r
+        * この関数は、行列に右手系のZ軸回転を設定します。\r
         * @param i_radian\r
+        * 設定するZ回転角(radian)\r
         */\r
        public final void setRotateZ(double i_radian)\r
        {\r
@@ -372,8 +414,13 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                \r
        }\r
        /**\r
-        * 行列に、右手系の並行移動を設定します。\r
-        * @param i_radian\r
+        * この関数は、行列に右手系の平行移動量を設定します。\r
+        * @param i_x\r
+        * x軸方向の平行移動量\r
+        * @param i_y\r
+        * y軸方向の平行移動量\r
+        * @param i_z\r
+        * z軸方向の平行移動量\r
         */\r
        public final void setTranslate(double i_x,double i_y,double i_z)\r
        {\r
@@ -383,8 +430,9 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                this.m23=i_z;\r
        }\r
        /**\r
-        * この行列をX軸回転します。\r
+        * この関数は、現在の行列をX軸で回転します。\r
         * @param i_mat_r\r
+        * 回転量(radian)\r
         */\r
        public final void rotateX(double i_radian)\r
        {\r
@@ -406,8 +454,9 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                this.m32=t1*(-s) + t2*c;\r
        }\r
        /**\r
-        * この行列をY軸回転します。\r
+        * この関数は、現在の行列をY軸で回転します。\r
         * @param i_mat_r\r
+        * 回転量(radian)\r
         */\r
        public final void rotateY(double i_radian)\r
        {\r
@@ -429,8 +478,9 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                this.m32=t1*s + t2*c;\r
        }\r
        /**\r
-        * この姿勢行列をZ軸回転します。\r
-        * @i_radian\r
+        * この関数は、現在の行列をZ軸で回転します。\r
+        * @param i_mat_r\r
+        * 回転量(radian)\r
         */\r
        public final void rotateZ(double i_radian)\r
        {\r
@@ -456,10 +506,13 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                return;\r
        }\r
        /**\r
-        * この姿勢行列を右手系で平行移動します。\r
+        * この関数は、現在の行列を平行移動します。\r
         * @param i_x\r
+        * X方向の平行移動量\r
         * @param i_y\r
+        * Y方向の平行移動量\r
         * @param i_z\r
+        * Z方向の平行移動量\r
         */\r
        public final void translate(double i_x,double i_y,double i_z)\r
        {\r
@@ -469,6 +522,10 @@ public class NyARDoubleMatrix44 implements INyARDoubleMatrix
                this.m33=this.m30*i_x + this.m31*i_y + this.m32*i_z + this.m33;\r
                return;\r
        }\r
+       /**\r
+        * テストプログラム\r
+        * @param args\r
+        */\r
        public static void main(String[] args)\r
        {\r
 \r