Bezierkurven - Punktkoordinaten

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

in folgendem Programm (siehe Ausschnitte) werden mit Hilfe einer Bezierkurve 20 Punkte dargestellt.

Code:
		// Anzahl der Auswertungen
		int num = 20;

		// FloatBuffer zum Einpacken der Kontrollpunkte
		FloatBuffer buf;

		// Kontrollpunkte
		float[] control_points = { 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f, 1.0f, 0.5f, 0.0f, 1.0f, -0.5f, 0.0f, 0.0f, -0.5f, 0.0f,

		0.0f, 0.0f, 0.0f };

		public void display(GLAutoDrawable gLDrawable) {
			gl = gLDrawable.getGL();
			glu = new GLU();
			GLUT glut = new GLUT();
			gl.glClear(gl.GL_COLOR_BUFFER_BIT);
			gl.glLoadIdentity();
			glu.gluLookAt(0, 0, 0.5, 0, 0, 0, 0, 1, 0);
			// Kontrollpunkte in FloatBuffer einwickeln
			buf = FloatBuffer.wrap(control_points);
			// Parameter für die spätere Auswertung setzen
			gl.glMap1f(gl.GL_MAP1_VERTEX_3, 0.0f, 1.0f, 3, 6, buf);
			gl.glEnable(gl.GL_MAP1_VERTEX_3);
			gl.glBegin(gl.GL_POINTS);
			for (float i = 0.0f; i <= num; i++) {
				// und auswerten

				gl.glEvalCoord1f(i / num);
			}
			gl.glEnd();
			gl.glFlush();
		}

Gibt es eine Möglichkeit die Koordinaten (x,y,z) dieser Punkte auszulesen? So nach dem Motto:

Code:
Vector vec = gl.glEvalCoord1f(i / num);

Dass es so nicht geht ist mir klar, da gl.glEvalCoord1f eine void Methode ist...

Ich hoffe ihr könnt mir helfen.

Gruß Christian
 
G

Guest

Gast
Es handelt sich übrigens um JOGL.

Sorry hatte ich vergessen zu erwähnen.
 

Marco13

Top Contributor
GL-eigene Funktionen gibt's da glaubich erstmal nicht (da hast du ja bestimmt schon fleißig danach gesucht :wink: :wink: :wink: ). Notfalls selbst ausrechnen. "Algorithmus von DeCasteljau" (oder so)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben