OSDN Git Service

[tag]NyARToolkit/2.5.1
[nyartoolkit-and/nyartoolkit-and.git] / tags / 2.5.1 / src / jp / nyatla / nyartoolkit / core / types / NyARLinear.java
1 /* \r
2  * PROJECT: NyARToolkit\r
3  * --------------------------------------------------------------------------------\r
4  * This work is based on the original ARToolKit developed by\r
5  *   Hirokazu Kato\r
6  *   Mark Billinghurst\r
7  *   HITLab, University of Washington, Seattle\r
8  * http://www.hitl.washington.edu/artoolkit/\r
9  *\r
10  * The NyARToolkit is Java edition ARToolKit class library.\r
11  * Copyright (C)2008-2009 Ryo Iizuka\r
12  *\r
13  * This program is free software: you can redistribute it and/or modify\r
14  * it under the terms of the GNU General Public License as published by\r
15  * the Free Software Foundation, either version 3 of the License, or\r
16  * (at your option) any later version.\r
17  * \r
18  * This program is distributed in the hope that it will be useful,\r
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
21  * GNU General Public License for more details.\r
22  *\r
23  * You should have received a copy of the GNU General Public License\r
24  * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
25  * \r
26  * For further information please contact.\r
27  *      http://nyatla.jp/nyatoolkit/\r
28  *      <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
29  * \r
30  */\r
31 package jp.nyatla.nyartoolkit.core.types;\r
32 \r
33 /**\r
34  * 0=dx*x+dy*y+cのパラメータを格納します。\r
35  * x,yの増加方向は、x=L→R,y=B→Tです。 \r
36  *\r
37  */\r
38 public class NyARLinear\r
39 {\r
40         public double dx;//dx軸の増加量\r
41         public double dy;//dy軸の増加量\r
42         public double c;//切片\r
43         public static NyARLinear[] createArray(int i_number)\r
44         {\r
45                 NyARLinear[] ret=new NyARLinear[i_number];\r
46                 for(int i=0;i<i_number;i++)\r
47                 {\r
48                         ret[i]=new NyARLinear();\r
49                 }\r
50                 return ret;\r
51         }       \r
52         public final void copyFrom(NyARLinear i_source)\r
53         {\r
54                 this.dx=i_source.dx;\r
55                 this.dy=i_source.dy;\r
56                 this.c=i_source.c;\r
57                 return;\r
58         }\r
59         /**\r
60          * 2直線の交点を計算します。\r
61          * @param l_line_i\r
62          * @param l_line_2\r
63          * @param o_point\r
64          * @return\r
65          */\r
66         public final static boolean crossPos(NyARLinear l_line_i,NyARLinear l_line_2,NyARDoublePoint2d o_point)\r
67         {\r
68                 final double w1 = l_line_2.dy * l_line_i.dx - l_line_i.dy * l_line_2.dx;\r
69                 if (w1 == 0.0) {\r
70                         return false;\r
71                 }\r
72                 o_point.x = (l_line_2.dx * l_line_i.c - l_line_i.dx * l_line_2.c) / w1;\r
73                 o_point.y = (l_line_i.dy * l_line_2.c - l_line_2.dy * l_line_i.c) / w1;\r
74                 return true;\r
75         }       \r
76 }\r