gluPartialDisk
(weitere exzellente Artikel) |
Inhaltsverzeichnis
gluPartialDisk
Name
gluPartialDisk - zeichnet einen Ausschnitt einer Scheibe.
Delphi-Spezifikation
procedure gluPartialDisk(quadObject: PGLUquadric; innerRadius, outerRadius: TGLdouble; slices, loops: TGLint; startAngle, sweepAngle : TGLdouble);
Parameter
quadObject | Gibt das Quadrik-Objekt an. (erstellt mit gluNewQuadric) |
innerRadius | Definiert den inneren Radius der Scheibe. (kann auch 0 sein.) |
outerRadius | Definiert den äußeren Radius der Scheibe. |
slices | Gibt die Anzahl der Unterteilungen um die Z-Achse an. (Vergl. Pizzastücke) |
loops | Gibt die Anzahl der konzentrischen Ringe um das Zentrum an, in welche die Scheibe unterteilt ist. |
startAngle | Definiert den Startwinkel des Scheibenausschnitts in Grad. |
sweepAngle | Definiert die Größe des Scheibenausschnitts in Grad. |
Beschreibung
Die Funktion gluPartialDisk rendert einen Ausschnitt einer Scheibe in der z = 0 Ebene. Ein Scheibenausschnitt ist ähnlich einer kompletten Scheibe mit dem Unterschied, dass sie nur einem Ab-/Ausschnitt der Scheibe darstellt.
Der Abschnitt beginnt bei startAngle und geht bis startAngle+sweepAngle.
Die Gradangaben sind so zu deuten:
Grad | Position im Koordinatensystem |
0 | pos. Y-Achse |
90 | pos. X-Achse |
180 | neg. Y-Achse |
270 | neg. X-Achse |
Der Scheibenabschnitt hat einen Radius von outerRadius und ein konzentrisches Loch mit dem Radius innerRadius.
Wenn innerRadius = 0 ist, wird kein Loch erstellt.
Der Scheibenabschnitt ist um die Z-Achse in Stücke unterteilt, die man sich wie Pizzastücke vorstellen kann, wobei die Z-Achse im Zentrum der Pizza (hier Scheibe) liegt.
Außerdem ist der Scheibenabschnitt noch in konzentrische Ringe aufgeteilt.
Die Anzahl der Ringe, aber auch der Stücke (wie sie über slices und loops angegeben werden) haben eine direkte Auswirkung auf die Wirkung des Ausschnitts bei angeschaltetem OpenGL-Licht (glLight). Je mehr es von beiden gibt, desto besser wirkt die Beleuchtung. (Nachteil: viele Polygone)
Die Orientierung des Ausschnitts ist so, dass die +z-Seite als Außenseite gilt (siehe gluQuadricOrientation). Das bedeutet, wenn die Orientierung auf GLU_OUTSIDE gesetzt wurde, zeigen die Normalen in Richtung der positiven Z-Achse, ansonsten in Richtung der negative Z-Achse.
Wenn mittels gluQuadricTexture Texturierung aktiviert ist, werden automatisch Texturkoordinaten in folgender Weise erstellt.
Wenn r = outerRadius dann gilt:
Koordinaten | Texture Koordinaten |
( r , 0.0, 0.0) | (1.0, 0.5) |
(0.0, -r , 0.0) | (0.5, 1.0) |
(-r , 0.0, 0.0) | (0.0, 0.5) |
(0.0, r , 0.0) | (0.5, 0.0) |
Beispiel
Um eine Partialdisk zu erzeugen die so aussieht wie im oben gezeigten Parameterbild muss folgendes getan werden:
var q : PGLUquadric;
q := gluNewQuadric();
gluPartialDisk(q, 1, 2, 12, 4, 0, 310);
gluDeleteQuadric(q);
Siehe auch
gluCylinder, gluDisk, gluNewQuadric, gluQuadricOrientation, gluQuadricTexture, gluSphere