glScale: Unterschied zwischen den Versionen
K (funktionsname korrigiert :)) |
K |
||
(18 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= glScale = | = glScale = | ||
<br> | <br> | ||
+ | |||
== Name == | == Name == | ||
− | + | '''glScale''' - bewirkt eine Verzerrung oder Spiegelung des Koordinatensystems. | |
<br> | <br> | ||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | glScaled | + | '''procedure''' glScaled(''x'', ''y'', ''z'': TGLdouble);<br> |
− | glScalef | + | |
+ | '''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 | + | [[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: | ||
− | < | + | |
− | + | <div align="center"> [[Bild:GlScale.png]]</div> | |
− | + | ||
− | + | 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 [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> | ||
− | + | </div> | |
− | + | ||
− | + | Weitere Beispiele bei [[Tutorial_Matrix2#Auswirkungen_von_Matrixmanipulationen_-_oder_.22Wie_positioniere_ich_meine_Objekte_richtig.3F.22|Tutorial Matrix2]]. | |
− | |||
− | [[ | ||
== Siehe auch == | == Siehe auch == | ||
− | + | [[glLoadMatrix]], [[glMatrixMode]], [[glMultMatrix]], [[glPushMatrix]], [[glRotate]], [[glTranslate]] | |
− | + | ||
− | + | ||
− | + | [[Kategorie:GL|Scale]] | |
− | + | [[Kategorie:GL1.0|Scale]] | |
− | [[ |
Aktuelle Version vom 18. Juni 2011, 14:40 Uhr
Inhaltsverzeichnis
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
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:
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
Weitere Beispiele bei Tutorial Matrix2.
Siehe auch
glLoadMatrix, glMatrixMode, glMultMatrix, glPushMatrix, glRotate, glTranslate