next up previous contents
Nächste Seite: Literatur Aufwärts: report Vorherige Seite: Universal Serial Bus   Inhalt

Unterabschnitte


Die OpenGL-Implementation

Es folgt eine Beschreibung des Anzeigemoduls, Details über dessen Implementation in OpenGL sowie der verwendeten Datenformate, die dem Austasch zwischen Scanner-Applikation und OpenGL dienen.

Literatur

Die hier benutzte OpenGL-Literatur umfaßt zum einen die OpenGL-Bücher [Cla97] und [Woo97], welche sich bei der Arbeit als besonders nützlich erwiesen haben. Desweiteren fand auch Literatur aus Zeitschriften Verwendung, u.a. eine Einführung in die Programmierung mit OpenGL aus der Zeitschrift iX [Mar00], die im Web unter [ URLiX] verfügbar ist.

Zusätzliche Bibliotheken

Zur Verwendung von Hilfsfunktionen, die unter OpenGL nicht direkt zur Verfügung stehen, wurde die Bibliothek GLUT von Mark Kilgard verwendet. Im einzelnen wurden folgende Funktionen von uns benutzt:

Funktionen


Transformation und Rotation

Die Quellcodes für Transformation und Rotation sehen wie folgt aus:

/* do the modell-transformation */
glTranslatef (X, 0.0 , 0.0);      /* translate X */
glTranslatef (0.0, Y , 0.0);      /* translate Y */
glTranslatef (0.0, 0.0 , Z);      /* translate Z */
glRotatef (rotX, 1.0, 0.0, 0.0);  /* rotate around X-Axis */
glRotatef (rotY, 0.0, 1.0, 0.0);  /* rotate around Y-Axis */
glRotatef (rotZ, 0.0, 0.0, 1.0);  /* rotate around Z-Axis */


Die Funktion DrawQuads

Hier exemplarisch der Sourcecode der Funktion der Funktion DrawQuads(). Die Zeiger Quad- Ptr, QuadTexturePtr, QuadColorPtr sowie NumQuad, die Anzahl der zu zeichnenden Flächen, müssen vorher entsprechend gesetzt werden.

void DrawQuads ()
{
   int i = 0, j = 0, k = 0, l = 0;
   i = 0;
   while (i < NumQuad * 12) {
      glBegin (GL_QUADS);
      for (l = 0; l < 4; l++) {
         if (show_texture == 1) {
            glTexCoord2f( (double)QuadTexturePtr[j+1],
                          (double)QuadTexturePtr[j]);
            j = j + 2;
         } else { 
            glColor3f( (double)QuadColorPtr[k++],
                       (double)QuadColorPtr[k++],
                       (double)QuadColorPtr[k++]);
         }
         glVertex3f( (double)QuadPtr[i++],
	             (double)QuadPtr[i++],
	             (double)QuadPtr[i++]);
      }
      glEnd ();
   }
}


Dateiformate

Die folgenden Beispiele zeigen den prinzipiellen Aufbau von Points.ogl und Data.ogl an einem konkreten Beispiel. Für eine syntaktische Interpretation siehe Kapitel 6.5.3.

Die Datei Points.ogl


420
11 29 2 3.75 4.11846
8 30 1 5.3125 8.40997
...

Die Datei Data.ogl


6827 Points
9 27 -2 3.125 3.84159 0.9 0.9 0.9
...
24 Lines 
-135 6 -136 -0.307904 0.116042 0.546667 0.1 0.1
-110 6 -138 -0.185688 0.115865 0.54 0.1 0.1
...
21 Surfaces 
32 16 -112 0.491071 0.14338 0.1 0.626667 0.1
58 16 -113 0.633296 0.14303 0.1 0.623333 0.1
60 51 -187 0.513035 0.179337 0.1 0.376667 0.1
39 50 -184 0.444973 0.179064 0.1 0.386667 0.1
...
56 Objects 
-77 49 -139 -0.033723 0.201429 0.1 0.1 0.9
-23 49 -139 0.209083 0.201429 0.1 0.1 0.9
-23 280 -139 0.209083 0.661554 0.1 0.1 0.9
-77 280 -139 -0.033723 0.661554 0.1 0.1 0.9
-77 49 -212 -0.033723 0.661554 0.1 0.1 0.9
-23 49 -212 -0.033723 0.661554 0.1 0.1 0.9
...


next up previous contents
Nächste Seite: Literatur Aufwärts: report Vorherige Seite: Universal Serial Bus   Inhalt