3D-Grafik (Java3D) Aus einem Objekt einer Szene (Würfel, Ebene) die wichtigen Randkoordinaten auslesen

TomBIT

Mitglied
Erstmal wünsche ich allen einen schönen Tag,

mein Problem lässt sich wie folgt schildern:
Ich habe eine Szene mit einem Würfel und einer darunterliegenden Ebene.

Bei der Implementierung die ich anstrebe muss ich berrechnen ob eine Schnittmenge mit einer Fläche des Würfels besteht. Dafür benötige ich Informationen über die Beschaffenheit der relevanten Randkoordinaten um damit die zu prüfenden Flächen (Ebenen) zu ermitteln und einen Geraden-Ebenen-Schnitttest durchzuführen.

Das Prinzip das ich umsetzen will lässt sich in folgender Grafik visualisieren:
Anhang anzeigen Selfmade Shadow.bmp

Weiss jemand wie man von einem 3D-Objekt (einem Shape3D-Objekt) die Eckkoordinaten bzw. überhaupt Koordinaten auslesen kann? Das beste wäre, wenn es geht das ich die Eckkoordinaten irgendwie auslesen könnte.

Die folgende Zeichnung soll darstellen welche Koordinaten ich mit Eckkoordinaten meine:
Anhang anzeigen Eckkoordinaten.bmp

Ein dankeschön im Vorraus an jede Hilfe
 
Erstmal ein Dankeschön für den Hinweis!

Werde mir mal den Ratschlag auf der verlinkten Seite ansehen und mich daran machen ihn umzusetzen.
 
Wollte für alle die dasselbe Problem haben und auf dieses hilfreiche Forum treffen, meine Lösung für das Auslesen der Koordinaten aus einem Shape öffentlich machen.

Dazu haben ich eine Funktion geschrieben, die man ohne große Schwierigkeiten bei sich einbinden kann.

Java:
private void coordinatesReadOfLiveObject(Shape3D shape) {
	// Shape-Objekt in GeometryArray-Objekt casten 
	GeometryArray ga = (GeometryArray) shape.getGeometry();
	
	// ermittle die Anzahl der Vertexe (getestet: Ebenen/Würfel)
	int coordinateCount = ga.getVertexCount();
		
	// koordinaten auslesen
	float[] coordinates = new float[coordinateCount * 3];
	ga.getCoordinates(0, coordinates);
		
	// Punkte ausgeben
	System.out.println("Punkte der geometrischen Form werden ausgegeben!");
		
	int coordinatenIndex = 1;
	for(int i = 0;i < coordinates.length - 2;i+=3) {
		System.out.println("Punkt " + coordinatenIndex + ":\nx:" + coordinates[i] + "\ny:" + coordinates[i + 1] + "\nz:" + coordinates[i + 2]);
		coordinatenIndex++;
	}
}
 

Zurück
Oben