*/\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