< Zurück | Inhalt | Weiter >

From TriangulatorTest.java


//Generate a surface from 10 vertices and

//create a hole in the surface by removing

//a hole defined using 5 vertices. Note that the hole

//must be entirely within the outer polygon. private double[] m_VertexArray = {1,1,0, //0

0,3,0, //1

1,5,0, //2

2,4,0, //3

4,5,0, //4

3,3,0, //5

4,2,0, //6

4,0,0, //7

3,0,0, //8

2,1,0, //9

//these are vertices for the hole 1,3,0, //10

2,3,0, //11

3,2,0, //12

3,1,0, //13

2,2,0};//14

//triangulate the polygon

GeometryInfo gi = new GeometryInfo( GeometryInfo.POLYGON_ARRAY ); gi.setCoordinates( m_VertexArray );

//the first 10 points make up the outer edge of the polygon,

//the next five make up the hole int[] stripCountArray = {10,5};

int[] countourCountArray = {stripCountArray.length};


gi.setContourCounts( countourCountArray ); gi.setStripCounts( stripCountArray );


Triangulator triangulator = new Triangulator(); triangulator.triangulate( gi );


//also generate normal vectors so that the surface can be light NormalGenerator normalGenerator = new NormalGenerator(); normalGenerator.generateNormals( gi );


//create an appearance

Appearance ap = new Appearance();


//render as a wireframe

PolygonAttributes polyAttrbutes = new PolygonAttributes(); polyAttrbutes.setPolygonMode( PolygonAttributes.POLYGON_LINE ); polyAttrbutes.setCullFace( PolygonAttributes.CULL_NONE ) ; ap.setPolygonAttributes( polyAttrbutes );


//add both a wireframe and a solid version

//of the triangulated surface

Shape3D shape1 = new Shape3D( gi.getGeometryArray(), ap ); Shape3D shape2 = new Shape3D( gi.getGeometryArray() );


image


After the geometry has been triangulated and normal vectors have been calculated, the geometry can be very easily stripified:


//invoke the Stripifier on the GeometryInfo Stripifier st = new Stripifier() st.stripify(gi);


//extract the stripified GeometryArray

Shape3D shape2 = new Shape3D( gi.getGeometryArray() );