OSDN Git Service

Revert "[update]NyARToolKit"
authorAtsuo Igarashi <atsuoigarashi@gmail.com>
Fri, 30 Apr 2010 00:25:38 +0000 (09:25 +0900)
committerAtsuo Igarashi <atsuoigarashi@gmail.com>
Fri, 30 Apr 2010 00:25:38 +0000 (09:25 +0900)
This reverts commit 5c3de4dcb3ed2c311507f58dc512575ae416fe95.

src/jp/nyatla/nyartoolkit/core/pickup/NyARColorPatt_Perspective_O2.java
src/jp/nyatla/nyartoolkit/core/utils/NyARPerspectiveParamGenerator.java
src/jp/nyatla/nyartoolkit/core/utils/NyARPerspectiveParamGenerator_O1.java

index 08621fa..dd51085 100644 (file)
@@ -676,10 +676,10 @@ public class NyARColorPatt_Perspective_O2 extends NyARColorPatt_Perspective
        public boolean pickFromRaster(INyARRgbRaster image,NyARIntPoint2d[] i_vertexs)throws NyARException\r
        {\r
                //遠近法のパラメータを計算\r
-               final double[] cpara = this.__pickFromRaster_cpara;             \r
-               if (!this._perspective_gen.getParam(i_vertexs, cpara)) {\r
+               final double[] cpara = this.__pickFromRaster_cpara;\r
+               if (!this._perspective_gen.getParam(i_vertexs, cpara)) {\r
                        return false;\r
-               }\r
+               }               \r
                this._pickup.pickFromRaster(cpara, image,this._patdata);\r
                return true;\r
        }\r
index 2927d61..46e8b57 100644 (file)
@@ -107,6 +107,7 @@ public class NyARPerspectiveParamGenerator
                D=(mat_y.m00*y1+mat_y.m01*y2+mat_y.m02*y3+mat_y.m03*y4)-F*(mat_y.m00+mat_y.m01+mat_y.m02+mat_y.m03);\r
                E=(mat_y.m10*y1+mat_y.m11*y2+mat_y.m12*y3+mat_y.m13*y4)-F*(mat_y.m10+mat_y.m11+mat_y.m12+mat_y.m13);\r
 \r
+\r
                o_param[0]=A;\r
                o_param[1]=B;\r
                o_param[2]=C;\r
index 08f3fc2..3922868 100644 (file)
@@ -32,197 +32,60 @@ import jp.nyatla.nyartoolkit.core.types.NyARIntPoint2d;
  */\r
 public class NyARPerspectiveParamGenerator_O1 extends NyARPerspectiveParamGenerator\r
 {\r
-       public NyARPerspectiveParamGenerator_O1(int i_local_x, int i_local_y, int i_width, int i_height)\r
+       public NyARPerspectiveParamGenerator_O1(int i_local_x,int i_local_y,int i_width, int i_height)\r
        {\r
-               super(1, 1, i_width, i_height);\r
+               super(i_local_x,i_local_y,i_width,i_height);\r
                return;\r
-       }\r
-\r
-\r
-       final public boolean getParam(final NyARIntPoint2d[] i_vertex, double[] o_param) throws NyARException\r
+       }/*\r
+       final public boolean getParam(final NyARIntPoint2d[] i_vertex,double[] o_param)throws NyARException\r
        {\r
-               final double ltx = this._local_x;\r
-               final double lty = this._local_y;\r
-               final double rbx = ltx + this._width;\r
-               final double rby = lty + this._height;\r
-\r
-               double det_1;\r
-               double a13, a14, a23, a24, a33, a34, a43, a44;\r
-               double b11, b12, b13, b14, b21, b22, b23, b24, b31, b32, b33, b34, b41, b42, b43, b44;\r
-               double t1, t2, t3, t4, t5, t6;\r
-               double v1, v2, v3, v4;\r
-               double kx0, kx1, kx2, kx3, kx4, kx5, kx6, kx7;\r
-               double ky0, ky1, ky2, ky3, ky4, ky5, ky6, ky7;\r
-               {\r
-                       v1 = i_vertex[0].x;\r
-                       v2 = i_vertex[1].x;\r
-                       v3 = i_vertex[2].x;\r
-                       v4 = i_vertex[3].x;\r
-                       a13 = -ltx * v1;\r
-                       a14 = -lty * v1;\r
-                       a23 = -rbx * v2;\r
-                       a24 = -lty * v2;\r
-                       a33 = -rbx * v3;\r
-                       a34 = -rby * v3;\r
-                       a43 = -ltx * v4;\r
-                       a44 = -rby * v4;\r
-\r
-                       t1 = a33 * a44 - a34 * a43;\r
-                       t4 = a34 * ltx - rbx * a44;\r
-                       t5 = rbx * a43 - a33 * ltx;\r
-                       t2 = rby * (a34 - a44);\r
-                       t3 = rby * (a43 - a33);\r
-                       t6 = rby * (rbx - ltx);\r
-\r
-                       b21 = -a23 * t4 - a24 * t5 - rbx * t1;\r
-                       b11 = (a23 * t2 + a24 * t3) + lty * t1;\r
-                       b31 = (a24 * t6 - rbx * t2) + lty * t4;\r
-                       b41 = (-rbx * t3 - a23 * t6) + lty * t5;\r
-\r
-                       t1 = a43 * a14 - a44 * a13;\r
-                       t2 = a44 * lty - rby * a14;\r
-                       t3 = rby * a13 - a43 * lty;\r
-                       t4 = ltx * (a44 - a14);\r
-                       t5 = ltx * (a13 - a43);\r
-                       t6 = ltx * (lty - rby);\r
-\r
-                       b12 = -rby * t1 - a33 * t2 - a34 * t3;\r
-                       b22 = (a33 * t4 + a34 * t5) + rbx * t1;\r
-                       b32 = (-a34 * t6 - rby * t4) + rbx * t2;\r
-                       b42 = (-rby * t5 + a33 * t6) + rbx * t3;\r
-\r
-                       t1 = a13 * a24 - a14 * a23;\r
-                       t4 = a14 * rbx - ltx * a24;\r
-                       t5 = ltx * a23 - a13 * rbx;\r
-                       t2 = lty * (a14 - a24);\r
-                       t3 = lty * (a23 - a13);\r
-                       t6 = lty * (ltx - rbx);\r
-\r
-                       b23 = -a43 * t4 - a44 * t5 - ltx * t1;\r
-                       b13 = (a43 * t2 + a44 * t3) + rby * t1;\r
-                       b33 = (a44 * t6 - ltx * t2) + rby * t4;\r
-                       b43 = (-ltx * t3 - a43 * t6) + rby * t5;\r
-\r
-                       t1 = a23 * a34 - a24 * a33;\r
-                       t2 = a24 * rby - lty * a34;\r
-                       t3 = lty * a33 - a23 * rby;\r
-                       t4 = rbx * (a24 - a34);\r
-                       t5 = rbx * (a33 - a23);\r
-                       t6 = rbx * (rby - lty);\r
-\r
-                       b14 = -lty * t1 - a13 * t2 - a14 * t3;\r
-                       b24 = a13 * t4 + a14 * t5 + ltx * t1;\r
-                       b34 = -a14 * t6 - lty * t4 + ltx * t2;\r
-                       b44 = -lty * t5 + a13 * t6 + ltx * t3;\r
-\r
-                       det_1 = (ltx * (b11 + b14) + rbx * (b12 + b13));\r
-                       if (det_1 == 0) {\r
-                               return false;\r
-                       }\r
-                       det_1 = 1 / det_1;\r
-\r
-                       kx0 = (b11 * v1 + b12 * v2 + b13 * v3 + b14 * v4) * det_1;\r
-                       kx1 = (b11 + b12 + b13 + b14) * det_1;\r
-                       kx2 = (b21 * v1 + b22 * v2 + b23 * v3 + b24 * v4) * det_1;\r
-                       kx3 = (b21 + b22 + b23 + b24) * det_1;\r
-                       kx4 = (b31 * v1 + b32 * v2 + b33 * v3 + b34 * v4) * det_1;\r
-                       kx5 = (b31 + b32 + b33 + b34) * det_1;\r
-                       kx6 = (b41 * v1 + b42 * v2 + b43 * v3 + b44 * v4) * det_1;\r
-                       kx7 = (b41 + b42 + b43 + b44) * det_1;\r
-               }\r
-               {\r
-                       v1 = i_vertex[0].y;\r
-                       v2 = i_vertex[1].y;\r
-                       v3 = i_vertex[2].y;\r
-                       v4 = i_vertex[3].y;\r
-                       a13 = -ltx * v1;\r
-                       a14 = -lty * v1;\r
-                       a23 = -rbx * v2;\r
-                       a24 = -lty * v2;\r
-                       a33 = -rbx * v3;\r
-                       a34 = -rby * v3;\r
-                       a43 = -ltx * v4;\r
-                       a44 = -rby * v4;\r
-\r
-                       t1 = a33 * a44 - a34 * a43;\r
-                       t4 = a34 * ltx - rbx * a44;\r
-                       t5 = rbx * a43 - a33 * ltx;\r
-                       t2 = rby * (a34 - a44);\r
-                       t3 = rby * (a43 - a33);\r
-                       t6 = rby * (rbx - ltx);\r
-\r
-                       b21 = -a23 * t4 - a24 * t5 - rbx * t1;\r
-                       b11 = (a23 * t2 + a24 * t3) + lty * t1;\r
-                       b31 = (a24 * t6 - rbx * t2) + lty * t4;\r
-                       b41 = (-rbx * t3 - a23 * t6) + lty * t5;\r
-\r
-                       t1 = a43 * a14 - a44 * a13;\r
-                       t2 = a44 * lty - rby * a14;\r
-                       t3 = rby * a13 - a43 * lty;\r
-                       t4 = ltx * (a44 - a14);\r
-                       t5 = ltx * (a13 - a43);\r
-                       t6 = ltx * (lty - rby);\r
-\r
-                       b12 = -rby * t1 - a33 * t2 - a34 * t3;\r
-                       b22 = (a33 * t4 + a34 * t5) + rbx * t1;\r
-                       b32 = (-a34 * t6 - rby * t4) + rbx * t2;\r
-                       b42 = (-rby * t5 + a33 * t6) + rbx * t3;\r
-\r
-                       t1 = a13 * a24 - a14 * a23;\r
-                       t4 = a14 * rbx - ltx * a24;\r
-                       t5 = ltx * a23 - a13 * rbx;\r
-                       t2 = lty * (a14 - a24);\r
-                       t3 = lty * (a23 - a13);\r
-                       t6 = lty * (ltx - rbx);\r
-\r
-                       b23 = -a43 * t4 - a44 * t5 - ltx * t1;\r
-                       b13 = (a43 * t2 + a44 * t3) + rby * t1;\r
-                       b33 = (a44 * t6 - ltx * t2) + rby * t4;\r
-                       b43 = (-ltx * t3 - a43 * t6) + rby * t5;\r
-\r
-                       t1 = a23 * a34 - a24 * a33;\r
-                       t2 = a24 * rby - lty * a34;\r
-                       t3 = lty * a33 - a23 * rby;\r
-                       t4 = rbx * (a24 - a34);\r
-                       t5 = rbx * (a33 - a23);\r
-                       t6 = rbx * (rby - lty);\r
-\r
-                       b14 = -lty * t1 - a13 * t2 - a14 * t3;\r
-                       b24 = a13 * t4 + a14 * t5 + ltx * t1;\r
-                       b34 = -a14 * t6 - lty * t4 + ltx * t2;\r
-                       b44 = -lty * t5 + a13 * t6 + ltx * t3;\r
-\r
-                       det_1 = (ltx * (b11 + b14) + rbx * (b12 + b13));\r
-                       if (det_1 == 0) {\r
-                               return false;\r
-                       }\r
-                       det_1 = 1 / det_1;\r
-\r
-                       ky0 = (b11 * v1 + b12 * v2 + b13 * v3 + b14 * v4) * det_1;\r
-                       ky1 = (b11 + b12 + b13 + b14) * det_1;\r
-                       ky2 = (b21 * v1 + b22 * v2 + b23 * v3 + b24 * v4) * det_1;\r
-                       ky3 = (b21 + b22 + b23 + b24) * det_1;\r
-                       ky4 = (b31 * v1 + b32 * v2 + b33 * v3 + b34 * v4) * det_1;\r
-                       ky5 = (b31 + b32 + b33 + b34) * det_1;\r
-                       ky6 = (b41 * v1 + b42 * v2 + b43 * v3 + b44 * v4) * det_1;\r
-                       ky7 = (b41 + b42 + b43 + b44) * det_1;\r
-               }\r
-\r
-               det_1 = kx5 * (-ky7) - (-ky5) * kx7;\r
-               if (det_1 == 0) {\r
-                       return false;\r
-               }\r
-               det_1 = 1 / det_1;\r
-\r
-               double C, F;\r
-               o_param[2] = C = (-ky7 * det_1) * (kx4 - ky4) + (ky5 * det_1) * (kx6 - ky6); // C\r
-               o_param[5] = F = (-kx7 * det_1) * (kx4 - ky4) + (kx5 * det_1) * (kx6 - ky6); // F\r
-               o_param[6] = kx4 - C * kx5;\r
-               o_param[7] = kx6 - C * kx7;\r
-               o_param[0] = kx0 - C * kx1;\r
-               o_param[1] = kx2 - C * kx3;\r
-               o_param[3] = ky0 - F * ky1;\r
-               o_param[4] = ky2 - F * ky3;\r
+               double G,H;\r
+               double w1,w2,w3,w4;\r
+               final double x0=i_vertex[0].x;\r
+               final double x1=i_vertex[1].x;\r
+               final double x2=i_vertex[2].x;\r
+               final double x3=i_vertex[3].x;\r
+               final double y0=i_vertex[0].y;\r
+               final double y1=i_vertex[1].y;\r
+               final double y2=i_vertex[2].y;\r
+               final double y3=i_vertex[3].y;\r
+               final double ltx=this._local_x;\r
+               final double lty=this._local_y;\r
+               final double rbx=ltx+this._width;\r
+               final double rby=lty+this._height;\r
+\r
+               \r
+               w1=-y3+y0;\r
+               w2= y2-y1;\r
+               final double la2_33=ltx*w1+rbx*w2;//これが0になるのはまずい。\r
+               final double la2_34=(rby*(-y3+y2)+lty*(y0-y1))/la2_33;\r
+               final double ra2_3 =(-w1-w2)/la2_33;\r
+               \r
+               w1=-x3+x0;\r
+               w2=x2-x1;\r
+               final double la1_33=ltx*w1+rbx*w2;//これが0になるのはまずい。\r
+               \r
+               //GHを計算\r
+               H=(ra2_3-((-w1-w2)/la1_33))/(la2_34-((rby*(-x3+x2)+lty*(x0-x1))/la1_33));\r
+               G=ra2_3-la2_34*H;\r
+               o_param[7]=H;\r
+               o_param[6]=G;\r
+\r
+               //残りを計算\r
+               w3=rby-lty;\r
+               w4=rbx-ltx;\r
+               w1=(y2-y1-H*(-rby*y2+lty*y1)-G*(-rbx*y2+rbx*y1))/w3;\r
+               w2=(y1-y0-H*(-lty*y1+lty*y0)-G*(-rbx*y1+ltx*y0))/w4;\r
+               o_param[5]=y0*(1+H*lty+G*ltx)-w1*lty-w2*ltx;\r
+               o_param[4]=w1;\r
+               o_param[3]=w2;\r
+               \r
+               \r
+               w1=(x2-x1-H*(-rby*x2+lty*x1)-G*(-rbx*x2+rbx*x1))/w3;\r
+               w2=(x1-x0-H*(-lty*x1+lty*x0)-G*(-rbx*x1+ltx*x0))/w4;\r
+               o_param[2]=x0*(1+H*lty+G*ltx)-w1*lty-w2*ltx;\r
+               o_param[1]=w1;\r
+               o_param[0]=w2;\r
                return true;\r
-       }\r
+       }*/\r
 }\r