glScale: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (funktionsname korrigiert :))
K
 
(18 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glScale =
 
= glScale =
 
<br>
 
<br>
 +
 
== Name ==
 
== Name ==
Die Funktion glScale bewirkt eine Verzerrung oder Spiegelung des Koordinatensystems.
+
'''glScale''' - bewirkt eine Verzerrung oder Spiegelung des Koordinatensystems.
 
<br>
 
<br>
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
glScaled: procedure(x, y, z: TGLdouble);<br>
+
'''procedure''' glScaled(''x'', ''y'', ''z'': TGLdouble);<br>
glScalef: procedure(x, y, z: TGLfloat);
+
 +
'''procedure''' glScalef(''x'', ''y'', ''z'': TGLfloat);
 
<br>
 
<br>
 +
 
== Parameter ==
 
== Parameter ==
 
<table border=1>
 
<table border=1>
Zeile 16: Zeile 19:
 
</table>
 
</table>
 
<br>
 
<br>
 +
 
== Beschreibung ==
 
== Beschreibung ==
Die Funktion glScale bewirkt eine Verzerrung oder Spiegelung des Koordinatensystems. Hierfür wird eine Skalierungsmatrix mit der aktiven [[Transformationsmatrix]] multipliziert.<br>
+
[[Bild:Tutorial Matrix2 Scale.png|344px|thumb|right|Skalierung des Koordinatensystems durch den Aufruf von '''glScalef(0.8,1,0.6);'''(''Auf Bild klicken zum vergrößern'')<br>Weitere Erklärungen im [[Tutorial Matrix2]].]]
 +
 
 +
Die Funktion '''glScale''' bewirkt eine Verzerrung oder Spiegelung des Koordinatensystems.  
 +
 
 +
Hierfür wird eine Skalierungsmatrix mit der [[glMatrixMode|aktuellen]] [[Matrix]] multipliziert.<br>
 
Die Skalierungsmatrix sieht so aus:
 
Die Skalierungsmatrix sieht so aus:
<pre>
+
 
  | x 0  0  0 |
+
<div align="center"> [[Bild:GlScale.png]]</div>
  | 0 y 0  0 |
+
 
  | 0  0  z 0 |
+
wobei x, y, z den übergebenen Parametern entspricht.
  | 0 0  0  1 |
+
 
</pre>
+
== Hinweise ==
 +
'''Es sollte um jeden Preis vermieden werden, eine Achse auf 0 zu skalieren''' (''x,y'' und ''z'' immer <> 0.0)! Dies führt dazu, dass die aktuelle Matrix [http://www.math.unizh.ch/fachverein/forum/detail.jsp?FORUM=120 singulär] wird und Funktionen wie [[gluProject]] sowie [[gluUnProject]] nicht mehr korrekt funktionieren.
 +
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
GL_INVALID_OPERATION wird generiert wenn glScale zwischen einem [[glBegin]] und dem zugehörigen [[glBegin|glEnd]] aufgerufen wird.
+
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glScale''' zwischen einem [[glBegin]] und dem zugehörigen [[glBegin|glEnd]] aufgerufen wird.
 +
 
 +
 
 +
 
 +
==  Zugehörige Wertrückgaben ==
 +
[[glGet]] mit Token [[glGet#GL_MATRIX_MODE|GL_MATRIX_MODE]]
 +
 
 +
[[glGet]] mit Token [[glGet#GL_MODELVIEW_MATRIX|GL_MODELVIEW_MATRIX]]
 +
 
 +
[[glGet]] mit Token [[glGet#GL_PROJECTION_MATRIX|GL_PROJECTION_MATRIX]]
 +
 
 +
[[glGet]] mit Token [[glGet#GL_TEXTURE_MATRIX|GL_TEXTURE_MATRIX]]
 +
 
 +
 
 +
 
 +
== Beispiele ==
 +
<div align="center">
 +
<table border=1>
 +
<tr>
 +
  <td>[[bild:Glscale_normal.png]]</td>
 +
  <td>Ein ganz normaler Würfel der keinerlei Skalierung erfahren hat.<br>Entspricht:'''glScale(1,1,1);'''</td>
 +
</tr>
 +
<tr>
 +
  <td>[[bild:Glscale_scaledx.png]]</td>
 +
  <td>Der gleiche Würfel, der diesmal entlang der X-Achse gestreckt wurde.<br>Entspricht:'''glScale(3,1,1);'''</td>
 +
</tr>
 +
<tr>
 +
  <td>[[bild:Glscale_invert.png]]</td>
 +
  <td>Der vorige Würfel, der nun auch entlang der Y-Achse invertiert wurde. <br>Entspricht:'''glScale(3,-1,1);'''</td>
 +
</tr>
 +
</table>
 
<br>
 
<br>
==  Zugehörige Wertrückgaben ==
+
</div>
[[glGet]] mit Token '''GL_MATRIX_MODE'''<br>
+
 
[[glGet]] mit Token '''GL_MODELVIEW_MATRIX'''<br>
+
Weitere Beispiele bei [[Tutorial_Matrix2#Auswirkungen_von_Matrixmanipulationen_-_oder_.22Wie_positioniere_ich_meine_Objekte_richtig.3F.22|Tutorial Matrix2]].
[[glGet]] mit Token '''GL_PROJECTION_MATRIX'''<br>
 
[[glGet]] mit Token '''GL_TEXTURE_MATRIX'''<br>
 
  
 
== Siehe auch ==
 
== Siehe auch ==
[[glLoadMatrix]]
+
[[glLoadMatrix]], [[glMatrixMode]], [[glMultMatrix]], [[glPushMatrix]], [[glRotate]], [[glTranslate]]
[[glMatrixMode]]
+
 
[[glMultMatrix]]
+
 
[[glPushMatrix]]
+
[[Kategorie:GL|Scale]]
[[glRotate]]
+
  [[Kategorie:GL1.0|Scale]]
  [[glTranslate]]
 

Aktuelle Version vom 18. Juni 2011, 14:40 Uhr

glScale


Name

glScale - bewirkt eine Verzerrung oder Spiegelung des Koordinatensystems.

Delphi-Spezifikation

procedure glScaled(x, y, z: TGLdouble);
procedure glScalef(x, y, z: TGLfloat);


Parameter

x, y, z Die einzelnen Parameter bestimmen die Verzerrung für die einzelnen Achsen


Beschreibung

Skalierung des Koordinatensystems durch den Aufruf von glScalef(0.8,1,0.6);(Auf Bild klicken zum vergrößern)
Weitere Erklärungen im Tutorial Matrix2.

Die Funktion glScale bewirkt eine Verzerrung oder Spiegelung des Koordinatensystems.

Hierfür wird eine Skalierungsmatrix mit der aktuellen Matrix multipliziert.
Die Skalierungsmatrix sieht so aus:

GlScale.png

wobei x, y, z den übergebenen Parametern entspricht.

Hinweise

Es sollte um jeden Preis vermieden werden, eine Achse auf 0 zu skalieren (x,y und z immer <> 0.0)! Dies führt dazu, dass die aktuelle Matrix singulär wird und Funktionen wie gluProject sowie gluUnProject nicht mehr korrekt funktionieren.

Fehlermeldungen

GL_INVALID_OPERATION wird generiert, wenn glScale zwischen einem glBegin und dem zugehörigen glEnd aufgerufen wird.


Zugehörige Wertrückgaben

glGet mit Token GL_MATRIX_MODE

glGet mit Token GL_MODELVIEW_MATRIX

glGet mit Token GL_PROJECTION_MATRIX

glGet mit Token GL_TEXTURE_MATRIX


Beispiele

Glscale normal.png Ein ganz normaler Würfel der keinerlei Skalierung erfahren hat.
Entspricht:glScale(1,1,1);
Glscale scaledx.png Der gleiche Würfel, der diesmal entlang der X-Achse gestreckt wurde.
Entspricht:glScale(3,1,1);
Glscale invert.png Der vorige Würfel, der nun auch entlang der Y-Achse invertiert wurde.
Entspricht:glScale(3,-1,1);


Weitere Beispiele bei Tutorial Matrix2.

Siehe auch

glLoadMatrix, glMatrixMode, glMultMatrix, glPushMatrix, glRotate, glTranslate