3. Vincent
Die Vincent 3D Rendering Library wird über zwei verschiedene Projekte in der Sourceforge angeboten. Das Projekt Vincent Mobile 3D Rendering Library bietet die Grafik Libraries an, die auf die OpenGL ® ES 1.x API aufbauen.Darstellung des Graphen auf dem PDA. Hierbei wird nun, aus dem am Anfang eingegebenen Werten, die Funktion berechnet und mittels OpenGL ES dargestellt.

Wenn man die Tastatur einbeldet, kann man mit den Pfeiltasten nach oben/unten/rechts/links gehen und in den Graphen rein und rauszoomen.

Folgend der Code-Auschnitt zum Zeichnen des Graphen und der Achsen. Wird die Position oder die Grösse geändert, werden alle Werte im Array output neu interpoliert und das Fenster neu gezeichnet.
{
glClear (GL_COLOR_BUFFER_BIT);
int i;
float x_prev;
float x_cur;
float y_cur;
float y_min = 0;
float y_max = 0;
// Die Farben der Achsen und des Graphen
GLfloat colors[] =
{
0.0f, 1.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
};
GLfloat colors2[] =
{
1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f,
};
// Die Linie
des Graphen besteht aus insgesamt
// PRECISION Linien-Abschnitten
GLfloat line[] =
{
output[0][0],output[0][1], 0.0,
output[0][0],output[0][1], 0.0
};
// Hier wird
der Graph gezeichnet
// Der rechte Punkt einer Linie
überschneidet sich dabei
// mit dem linken Punkt der nächsten
Linie
for (i = 1; i < PRECISION; i++)
{
x_prev =
output[i-1][0];
x_cur = output[i][0];
y_cur =
output[i][1];
line[0] = x_prev;
line[3] = x_cur;
line[1] = line[4];
line[4] = y_cur;
glColorPointer(4,
GL_FLOAT, 0, colors2);
glVertexPointer(3,
GL_FLOAT, 0, line);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_LINES,
0, 2);
if (y_cur <
y_min)
y_min
= y_cur;
if (y_cur > y_max)
y_max
= y_cur;
}
// Hier werden die Achsen gezeichnet
GLfloat xAxis[] ={
left, 0.0, 0.0,
right, 0.0, 0.0
};
GLfloat yAxis[] =
{
0.0, bottom, 0.0,
0.0, top, 0.0
};
glColorPointer(4, GL_FLOAT, 0,
colors);
glVertexPointer(3, GL_FLOAT, 0, xAxis);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_LINES, 0, 2);
glColorPointer(4, GL_FLOAT, 0,
colors);
glVertexPointer(3, GL_FLOAT, 0, yAxis);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_LINES, 0, 2);
glFlush ();
ugSwapBuffers(uwin);
}