Geometry


図形の形状を表わす Geometry についての詳しい解説です。

GeometryArray / IndexedGeometryArray / 戻る / トップページ


GeometryArray

Geometry クラスのサブクラスの GeometryArray クラスのさらにサブクラスの 1 つである TriangleArray クラスは 3 角形の面で構成される形状を表現します。 TriangleArray クラスを使う事で 4 面体などを定義できます。
 
コンストラクタは TriangleArray(int vertexCount, int vertexFormat) です。 vertexCount は頂点の数を、 vertexFormat は TriangleArray クラスに定義されている定数 (正確にはスーパークラスである GeometryArray の定数) を指定します。
 
コンストラクタの vertexCount に指定する頂点の数は 3 の倍数である必要があります (3 角形の面で構成されるため)。 普通は vertexCount = 3 × 面の数 とします。 例えば 4 面体ならば 3 × 4 = 12 を指定します。 3 の倍数以外を指定すると IllegalArgumentException が発生します。
 
コンストラクタの vertexFormat に指定する定数は COORDINATES (座標), NORMALS (法線ベクトル), COLOR_3 (色), COLOR_4 (透明色を含んだ色), TEXTURE_COORDINATE_2 (2 次元のテキスチャー座標), TEXTURE_COORDINATE_3 (3 次元のテキスチャー座標) のうち定義したい項目に対応するものを OR 演算でつなげたものを指定します。 例えば座標と色を定義したい時は COORDINATES | COLOR_3 とします。
	TriangleArray geometry=new TriangleArray(
		12,TriangleArray.COORDINATES | TriangleArray.COLOR_3);
		// vertexCount = 3 × 4
		// vertexFormat = 座標、色
そして生成された TriangleArray オブジェクトに対して setCoordinates メソッドや setColor メソッドで 頂点の座標や色を定義することで Geometry オブジェクトの完成です。
	Point3d p0=new Point3d(           0.0 ,-2.0*Math.sqrt(2.0)*1.0/3.0, 2.0);
	Point3d p1=new Point3d( Math.sqrt(3.0),-2.0*Math.sqrt(2.0)*1.0/3.0,-1.0);
	Point3d p2=new Point3d(-Math.sqrt(3.0),-2.0*Math.sqrt(2.0)*1.0/3.0,-1.0);
	Point3d p3=new Point3d(           0.0 , 2.0*Math.sqrt(2.0)*2.0/3.0, 0.0);
	
	Color3f c0=new Color3f(0.1f,1.0f,0.3f);
	Color3f c1=new Color3f(0.1f,1.0f,0.3f);
	Color3f c2=new Color3f(0.1f,1.0f,0.3f);
	Color3f c3=new Color3f(0.1f,1.0f,0.3f);
	
	Point3d[] vertexs={
		p0,p2,p1,	// 面1
		p0,p1,p3,	// 面2
		p0,p3,p2,	// 面3
		p1,p2,p3};	// 面4
	Color3f[] colors={
		c0,c2,c1,	// 面1
		c0,c1,c3,	// 面2
		c0,c3,c2,	// 面3
		c1,c2,c3};	// 面4
	
	geometry.setCoordinates(0,vertexs);	// 頂点座標の設定
	geometry.setColors(0,colors);	// 頂点の色の設定
各面の頂点座標は物体の内側から見て右回りになるように定義してください。
 
まったく同じ要領で 4 角形の面で構成される形状 (QuadArray) や 直線 (LineArray)、 点 (PointArray) も定義できます。

戻る