OSDN Git Service

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit/trunk@803 7cac0...
[nyartoolkit-and/nyartoolkit-and.git] / lib / src / jp / nyatla / nyartoolkit / core / types / NyARVecLinear2d.java
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-<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