- // erzeugt die Geometrie einer Linie der Laenge l
-
- private Geometry createLineGeometry(float l) {
- LineArray la = new LineArray(2, LineArray.COORDINATES);
- la.setCoordinate(0, new Point3f(0f, -l/2f, 0f));
- la.setCoordinate(1, new Point3f(0f, l/2f, 0f));
- return la;
- } // Ende Methode createLineGeometry
Im nächsten Code-Fragment wird die Methode createCircleGeometry vorgestellt. Um die
Geometrie eines Kreises zu erzeugen, verwendet man anstatt eines LineArrays besser ein
LineStripArray. Der Vorteil liegt darin, dass beim LineStripArray alle Punkte
miteinander verbunden werden. Unter Verwendung eines LineArrays hingegen werden jeweils
nur zwei Punkte miteinander verbunden, also P1 mit P2, P3 mit P4, P5 mit P6, usw. aber
nicht P1 mit P2, P2 mit P3, P3 mit P4, usw. . Die Koordinaten des Kreises berechnet die
Hilfsmethode createCircleCoords.
- // erzeugt die Geometrie eines Kreises mit Radius r und N Punkten
-
- private Geometry createCircleGeometry(float r, int N) {
- int[] stripCounts = {N};
- LineStripArray lsa =
- new LineStripArray(N, LineStripArray.COORDINATES, stripCounts);
- lsa.setCoordinates(0, createCircleCoords(r, N));
- return lsa;
- } // Ende Methode createCircleGeometry
Die Koordinaten eines Kreises lassen sich unter Verwendung der Hilfsmethode createCircleCoords
bestimmen. Parameter r gibt dabei den Radius des Kreises an. Da ein Kreis eigentlich aus
unendlich vielen Koordinatenpaaren besteht, muss hier eine Beschränkung erfolgen. Die Anzahl
der Koordinatenpaare wird dabei durch den Parameter N angegeben. Je größer der Wert für N ist,
desto genauer oder runder wird der berechnete Kreis.
- // liefert die Koordinaten eines Kreises mit dem Radius r und N Paaren
-
- private Point3f[] createCircleCoords(float r, int N) {
- Point3f[] coords = new Point3f[N];
- int n;
- double a;
- float x, z;
-
- for (a = 0, n = 0; n < N; a = 2.0 * Math.PI / (N-1) * ++n) {
- x = (float) (r * Math.sin(a));
- z = (float) (r * Math.cos(a));
- coords[n] = new Point3f(x, 0f, z);
- }
- return coords;
- } // Ende Methode createCircleCoords
Einfacher als die direkte Programmierung von Geometrie ist die automatische Erzeugung
von Geometrie durch ein CAD (Computer Aided Design) Programm. Der Entwurf beschränkt
sich dann auf das Zeichnen der Figuren, das CAD-Programm setzt die Figuren in Polygone
um. Java 3D unterstützt diverse Formate und stellt entsprechende Loader dafür bereit. Auf
den Webseiten der Firma Sun Microsystems befinden sich
Links zu den Anbietern bestimmter Loader.
Dateiformat | Beschreibung |
---|---|
3DS | 3D Studio |
COB | Caligari trueSpace |
DEM | Digital Elevation Map |
DXF | AutoCAD Drawing Interchange File |
IOB | Imagine |
LWS | Lightwave Scene Format |
NFF | WorldToolKit NFF Format |
OBJ | Wavefront |
PDB | Protein Data Bank |
PLAY | PLAY |
SLD | Solid Works (prt and asm files) |
VRT | Superscape VRT |
VTK | Visual Toolkit |
WRL | Virtual Reality Modeling Language |
- // erzeugt die Sonne
-
- Appearance sunAppear = new Appearance();
- sunAppear.setMaterial(new Material(BLACK, WHITE, WHITE, WHITE, 1f));
- Sphere sun = new Sphere(SUNRADIUS, sunAppear);
-
- // erzeugt den Mond
-
- Appearance moonAppear = new Appearance();
- moonAppear.setMaterial(new Material(BLACK, BLACK, WHITE, WHITE, 1f));
- Sphere moon = new Sphere(MOONRADIUS, moonAppear);
- // erzeugt die Erde
-
- Appearance earthAppear = new Appearance();
- earthAppear.setTexture(
- new TextureLoader(TEXTURE_FNAME, this).getTexture());
- Sphere earth = new Sphere(EARTHRADIUS,
- Primitive.GENERATE_TEXTURE_COORDS,
- earthAppear);
- RotationInterpolator rotIntMonth =
- new RotationInterpolator(new Alpha(-1, MONTH), objMonth);
... [ Seminar XML und JAVA ] ... [ Thema Java 3D API ] ... [ NodeComponent Objects ] ... [ Literaturverzeichnis ] ...