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 / NyARIntPoint2d.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  * このクラスは、int型の二次元の点を格納します。\r
35  *\r
36  */\r
37 public class NyARIntPoint2d\r
38 {\r
39         /** X座標の値です。*/\r
40         public int x;\r
41         /** Y座標の値です。*/\r
42         public int y;\r
43         /**\r
44          * この関数は、指定サイズのオブジェクト配列を作ります。\r
45          * @param i_number\r
46          * 作成する配列の長さ\r
47          * @return\r
48          * 新しい配列。\r
49          */\r
50         public static NyARIntPoint2d[] createArray(int i_number)\r
51         {\r
52                 NyARIntPoint2d[] ret=new NyARIntPoint2d[i_number];\r
53                 for(int i=0;i<i_number;i++)\r
54                 {\r
55                         ret[i]=new NyARIntPoint2d();\r
56                 }\r
57                 return ret;\r
58         }\r
59         /**\r
60          * この関数は、配列の値をコピーします。\r
61          * 配列の長さは、同じである必要があります。\r
62          * @param i_from\r
63          * コピー元の配列\r
64          * @param i_to\r
65          * コピー先の配列\r
66          */\r
67         public static void copyArray(final NyARIntPoint2d[] i_from,NyARIntPoint2d[] i_to)\r
68         {\r
69                 for(int i=i_from.length-1;i>=0;i--)\r
70                 {\r
71                         i_to[i].x=i_from[i].x;\r
72                         i_to[i].y=i_from[i].y;\r
73                 }\r
74                 return;\r
75         }\r
76         /**\r
77          * この関数は、インスタンスの座標と、指定点との距離の2乗値を返します。\r
78          * @param i_p1\r
79          * 点の座標\r
80          * @return\r
81          * i_p1との距離の二乗値\r
82          */     \r
83         public final int sqDist(NyARIntPoint2d i_p1)\r
84         {\r
85                 int x=this.x-i_p1.x;\r
86                 int y=this.y-i_p1.y;\r
87                 return x*x+y*y;\r
88         }\r
89         /**\r
90          * この関数は、頂点集合から、中央値(Σp[n]/n)を求めて、インスタンスにセットします。\r
91          * @param i_points\r
92          * 頂点集合を格納した配列です。\r
93          * @param i_number_of_data\r
94          * 配列中の有効な頂点数です。\r
95          */     \r
96         public final void setCenterPos(NyARIntPoint2d[] i_point,int i_number_of_vertex)\r
97         {\r
98                 int cx,cy;\r
99                 cx=cy=0;\r
100                 for(int i=i_number_of_vertex-1;i>=0;i--){\r
101                         cx+=i_point[i].x;\r
102                         cy+=i_point[i].y;\r
103                 }\r
104                 this.x=cx/i_number_of_vertex;\r
105                 this.y=cy/i_number_of_vertex;\r
106         }\r
107         /**\r
108          * この関数は、オブジェクトからインスタンスに値をセットします。\r
109          * @param i_source\r
110          * コピー元のオブジェクト。\r
111          */\r
112         public final void setValue(NyARIntPoint2d i_source)\r
113         {\r
114                 this.x=i_source.x;\r
115                 this.y=i_source.y;\r
116         }\r
117         /**\r
118          * この関数は、オブジェクトからインスタンスに値をセットします。\r
119          * @param i_source\r
120          * コピー元のオブジェクト。\r
121          */     \r
122         public final void setValue(NyARDoublePoint2d i_source)\r
123         {\r
124                 this.x=(int)i_source.x;\r
125                 this.y=(int)i_source.y;\r
126         }\r
127         /**\r
128          * この関数は、インスタンスに値をセットします。\r
129          * @param i_x\r
130          * {@link #x}にセットする値\r
131          * @param i_y\r
132          * {@link #y}にセットする値\r
133          */     \r
134         public final void setValue(int i_x,int i_y)\r
135         {\r
136                 this.x=i_x;\r
137                 this.y=i_y;\r
138         }\r
139 }\r