OSDN Git Service

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit/trunk@759 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         public int x;\r
40 \r
41         public int y;\r
42         /**\r
43          * 配列ファクトリ\r
44          * @param i_number\r
45          * @return\r
46          */\r
47         public static NyARIntPoint2d[] createArray(int i_number)\r
48         {\r
49                 NyARIntPoint2d[] ret=new NyARIntPoint2d[i_number];\r
50                 for(int i=0;i<i_number;i++)\r
51                 {\r
52                         ret[i]=new NyARIntPoint2d();\r
53                 }\r
54                 return ret;\r
55         }\r
56         /**\r
57          * i_fromからi_toへ配列をコピーします。\r
58          * @param i_from\r
59          * @param i_to\r
60          */\r
61         public static void copyArray(final NyARIntPoint2d[] i_from,NyARIntPoint2d[] i_to)\r
62         {\r
63                 for(int i=i_from.length-1;i>=0;i--)\r
64                 {\r
65                         i_to[i].x=i_from[i].x;\r
66                         i_to[i].y=i_from[i].y;\r
67                 }\r
68                 return;\r
69         }\r
70         /**\r
71          * p2-p1間の距離の二乗値を計算します。\r
72          * @param i_p1\r
73          * @param i_p2\r
74          * @return\r
75          */     \r
76         public final int sqDist(NyARIntPoint2d i_p1)\r
77         {\r
78                 int x=this.x-i_p1.x;\r
79                 int y=this.y-i_p1.y;\r
80                 return x*x+y*y;\r
81         }\r
82         \r
83         /**\r
84          * 中心位置を計算して設定する。\r
85          * @param i_point\r
86          * @param i_number_of_vertex\r
87          */\r
88         public final void setCenterPos(NyARIntPoint2d[] i_point,int i_number_of_vertex)\r
89         {\r
90                 int cx,cy;\r
91                 cx=cy=0;\r
92                 for(int i=i_number_of_vertex-1;i>=0;i--){\r
93                         cx+=i_point[i].x;\r
94                         cy+=i_point[i].y;\r
95                 }\r
96                 this.x=cx/i_number_of_vertex;\r
97                 this.y=cy/i_number_of_vertex;\r
98         }\r
99         /**\r
100          * i_sourceの値を、thisへセットします。\r
101          * @param i_source\r
102          */\r
103         public final void setValue(NyARIntPoint2d i_source)\r
104         {\r
105                 this.x=i_source.x;\r
106                 this.y=i_source.y;\r
107         }\r
108         public final void setValue(NyARDoublePoint2d i_source)\r
109         {\r
110                 this.x=(int)i_source.x;\r
111                 this.y=(int)i_source.y;\r
112         }\r
113         public final void setValue(int i_x,int i_y)\r
114         {\r
115                 this.x=i_x;\r
116                 this.y=i_y;\r
117         }\r
118 }\r