gluPartialDisk

Aus DGL Wiki
(Weitergeleitet von GluPartialDisk)
Wechseln zu: Navigation, Suche
Hinweis: Dieser Artikel wurde von den Benutzern des Wikis zum exzellenten Artikel berufen!
(weitere exzellente Artikel)
Excelent.jpg

gluPartialDisk

Name

gluPartialDisk - zeichnet einen Ausschnitt einer Scheibe.


Delphi-Spezifikation

procedure gluPartialDisk(quadObject: PGLUquadric; 
                         innerRadius, outerRadius: TGLdouble;
                  	  slices, loops: TGLint;
                         startAngle, sweepAngle : TGLdouble);


Partielle Disk mit Loch (innerRadius=1.0, outerRadius=2.0, slices=12, loops=4, startAngle=0, sweepAngle=310)


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