glEvalCoord: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Beschreibung: Formel in MathML Form eingebaut. - nur mal testweise scheint zumindest in der Vorschau nicht zu funktionieren)
K (Kategorisierung)
 
(16 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unvollständig}}
 
 
= glEvalCoord =
 
= glEvalCoord =
  
Zeile 37: Zeile 36:
 
<br>
 
<br>
 
== Beschreibung ==  
 
== Beschreibung ==  
'''glEvalCoord1''' wertet die aktivierte eindimensionale Karte an der Stelle ''u'' aus. '''glEvalCoord2''' tut das selbe mit zweidimensionalen Karten unter Benutzung von zwei Gebietswerten, ''u'' und ''v''.<br>
+
{{Hinweis|Die Orginalspezifikation spricht von "Maps" also Karten. In der folgenden Beschreibung wird dieser Begriff durch "Bezierkurven" ersetzt. 2D-Maps entsprechen somit einem Raster/Fläche aus Bezierkurven.}}
''Karten werden mittels [[glMap1]] bzw. [[glMap2]] erstellt und durch [[glEnable]]/[[glDisable]] aktiviert und deaktiviert.''
 
  
 +
'''glEvalCoord1''' wertet die aktivierte eindemensionale Bezierkurve an der Stelle ''u'' aus. '''glEvalCoord2''' tut das selbe mit zweidimensionalen Bezierkurve unter Benutzung von zwei Gebietswerten, ''u'' und ''v''.<br>
 +
''Bezierkurven werden mittels [[glMap1]] bzw. [[glMap2]] erstellt und durch [[glEnable]]/[[glDisable]] aktiviert und deaktiviert.''
  
Wenn eine der '''glEvalCoord''' Funktionen ausgeführt wird, werden alle momentan aktiven Karten, welche die entsprechende Dimension haben, ausgewertet. Anschließend ist es für jede ausgewertete Karte so, als ob der zugehörige GL-Befehl aufgerufen worden wäre. Dies bedeutet, dass
+
 
 +
Wenn eine der '''glEvalCoord''' Funktionen ausgeführt wird, werden alle momentan aktiven Bezierkurven, welche die entsprechende Dimension haben, ausgewertet. Anschließend ist es für jede ausgewertete Karte so, als ob der zugehörige GL-Befehl aufgerufen worden wäre. Dies bedeutet, dass
 
* wenn GL_MAP1_INDEX oder GL_MAP2_INDEX aktiviert wurde, wird ein [[glIndex]] Befehl simuliert.
 
* wenn GL_MAP1_INDEX oder GL_MAP2_INDEX aktiviert wurde, wird ein [[glIndex]] Befehl simuliert.
 
* wenn GL_MAP1_COLOR oder GL_MAP2_COLOR aktiviert wurde, wird ein [[glColor]] Befehl simuliert.
 
* wenn GL_MAP1_COLOR oder GL_MAP2_COLOR aktiviert wurde, wird ein [[glColor]] Befehl simuliert.
Zeile 47: Zeile 48:
 
* wenn eine der Texurfunktionen (GL_MAP1_TEXTURE_COORD_1, GL_MAP1_TEXTURE_COORD_2, GL_MAP1_TEXTURE_COORD_3, GL_MAP1_TEXTURE_COORD_4, GL_MAP2_TEXTURE_COORD_1, GL_MAP2_TEXTURE_COORD_2, GL_MAP2_TEXTURE_COORD_3, oder GL_MAP2_TEXTURE_COORD_4) aktiviert wurde, wird ein entsprechender [[glTexCoord]] Befehl simuliert.
 
* wenn eine der Texurfunktionen (GL_MAP1_TEXTURE_COORD_1, GL_MAP1_TEXTURE_COORD_2, GL_MAP1_TEXTURE_COORD_3, GL_MAP1_TEXTURE_COORD_4, GL_MAP2_TEXTURE_COORD_1, GL_MAP2_TEXTURE_COORD_2, GL_MAP2_TEXTURE_COORD_3, oder GL_MAP2_TEXTURE_COORD_4) aktiviert wurde, wird ein entsprechender [[glTexCoord]] Befehl simuliert.
  
Die GL benutzt abgeschätzte Werte anstatt der aktuellen Werte für die Auswertungen die aktiviert wurden. Hingegen werden immer aktuelle Werte für die Farbe, Farbindex, Normale und Texturkoordinaten verwendet. Was auch immer passier, die ausgewerteten Werte überschreiben niemals die aktuellen Werte. Das heißt, wenn [[glVertex]] Befehle mit '''glEvalCoord''' Befehlen durchsetzt sind, werden die Farbe, Normale und Texturkoordinaten die zu dem [[Vertex]] gehören nicht von den Werten beeinflußt, die durch die '''glEvalCoord''' Befehle erzeugt werden. Überschrieben werden diese Werte nur durch die dafür vorgesehen Befehle [[glColor]], [[glIndex]], [[glNormal]] und [[glTexCoord]].
+
Die Farbe, Farbindex, Normale und Texturkoordinaten, werden jedes mal errechnet wenn die Berechunung für diese Werte aktiviert wurde (ansonsten werden die aktuellen Werte benutzt). Diese berechneten Werte überschreiben allerdings nicht die aktuelle Farbe, Farbindex, Normale oder Texturkoordiante.<br />
 
+
Das heißt, wenn [[glVertex]] Befehle mit '''glEvalCoord''' Befehlen durchsetzt sind, werden die Farbe, Normale und Texturkoordinaten die zu dem [[Vertex]] gehören nicht von den Werten beeinflußt, die durch die '''glEvalCoord''' Befehle erzeugt werden. Überschrieben werden diese Werte nur durch die dafür vorgesehen Befehle [[glColor]], [[glIndex]], [[glNormal]] und [[glTexCoord]].
  
Es werden keine Simulationen für Karten durchgeführt die nicht aktiv sind. Wenn mehr als eine Texturauswertung für eine bestimmte Dimension (zum Beispiel GL_MAP2_TEXTURE_COORD_1 and GL_MAP2_TEXTURE_COORD_2) aktiviert ist, dann wird nur die Auswertung der Karte ausgeführt, welche die größere Anzahl an Koordinaten produziert (In diesem Beispiel also GL_MAP2_TEXTURE_COORD_2). Ähnlich verhält es sich mit anderen Funktionen. Es gilt:  
+
Es werden keine Simulationen für Bezierkurven durchgeführt die nicht aktiv sind. Wenn mehr als eine Texturauswertung für eine bestimmte Dimension (zum Beispiel GL_MAP2_TEXTURE_COORD_1 and GL_MAP2_TEXTURE_COORD_2) aktiviert wurde, dann wird nur die Auswertung der Bezierkurve ausgeführt, welche die größere Anzahl an Koordinaten produziert (In diesem Beispiel also GL_MAP2_TEXTURE_COORD_2). Ähnlich verhält es sich mit anderen Funktionen. Es gilt:  
 
*GL_MAP1_VERTEX_4 dominiert GL_MAP1_VERTEX_3
 
*GL_MAP1_VERTEX_4 dominiert GL_MAP1_VERTEX_3
 
*GL_MAP2_VERTEX_4 dominiert GL_MAP2_VERTEX_3
 
*GL_MAP2_VERTEX_4 dominiert GL_MAP2_VERTEX_3
Zeile 58: Zeile 59:
 
Wenn die automatische [[Normale]]n-Generierung durch einen Aufruf von [[glEnable]] mit dem Token GL_AUTO_NORMAL aktiviert ist, erstellt '''glEvalCoord2''' Oberflächennormalen analytisch, unabhängig vom Inhalt oder der Aktivierung der GL_MAP2_NORMAL Karte. Wenn
 
Wenn die automatische [[Normale]]n-Generierung durch einen Aufruf von [[glEnable]] mit dem Token GL_AUTO_NORMAL aktiviert ist, erstellt '''glEvalCoord2''' Oberflächennormalen analytisch, unabhängig vom Inhalt oder der Aktivierung der GL_MAP2_NORMAL Karte. Wenn
  
MathML Formel durch Text ersetzen:
+
[[Bild:GlEvalCoord_LaTeX_Formel1.png|<nowiki>m = \frac{P_{p}}{P_{u}} \times \frac{P_{p}}{P_{v}}</nowiki>]]
<math:math xmlns:math="http://www.w3.org/1998/Math/MathML">
 
  <math:semantics>
 
  <math:mrow>
 
    <math:mfrac>
 
    <math:msub>
 
      <math:mi>P</math:mi>
 
      <math:mi>p</math:mi>
 
    </math:msub>
 
    <math:msub>
 
      <math:mi>P</math:mi>
 
      <math:mi>u</math:mi>
 
    </math:msub>
 
    </math:mfrac>
 
    <math:mo math:stretchy="false">×</math:mo>
 
    <math:mfrac>
 
    <math:msub>
 
      <math:mi>P</math:mi>
 
      <math:mi>p</math:mi>
 
    </math:msub>
 
    <math:msub>
 
      <math:mi>P</math:mi>
 
      <math:mi>v</math:mi>
 
    </math:msub>
 
    </math:mfrac>
 
  </math:mrow>
 
  <math:annotation math:encoding="StarMath 5.0">P_{p} over P_{u} times {P_{p} over P_{v}}</math:annotation>
 
  </math:semantics>
 
</math:math>
 
  
 
Dann ist die generierte normale n gleich
 
Dann ist die generierte normale n gleich
  
'''''FORMEL EINFÜGEN'''''
+
[[Bild:GlEvalCoord_LaTeX_Formel2.png|<nowiki>n = \frac{-}{ \left \Vert m \right \| }</nowiki>]]
  
 
Wenn die automatische Normalengenerierung deaktiviert wurde, wird die zugehörige Normalenkarte GL_MAP2_NORMAL, falls aktiviert, genutzt um eine Normale herzustellen. Wenn weder die automatische Generierung noch die Normalenkarte aktiviert sind, generiert '''glEvalCoord2''' keine Normalen.
 
Wenn die automatische Normalengenerierung deaktiviert wurde, wird die zugehörige Normalenkarte GL_MAP2_NORMAL, falls aktiviert, genutzt um eine Normale herzustellen. Wenn weder die automatische Generierung noch die Normalenkarte aktiviert sind, generiert '''glEvalCoord2''' keine Normalen.
Zeile 125: Zeile 98:
  
 
== Links ==
 
== Links ==
*[http://www.delphigl.com/script/do_show.php?name=curve&action=2 DGL Tutorial: Abseits eckiger Welten]
+
*[[Tutorial_Abseits_eckiger_Welten|DGL Tutorial: Abseits eckiger Welten]]
  
 
[[Kategorie:GL|EvalCoord]]
 
[[Kategorie:GL|EvalCoord]]
 +
[[Kategorie:GL1.0|EvalCoord]]

Aktuelle Version vom 15. Juli 2011, 01:29 Uhr

glEvalCoord


Name

glEvalCoord1d, glEvalCoord1f, glEvalCoord2d, glEvalCoord2f, glEvalCoord1dv, glEvalCoord1fv, glEvalCoord2dv, glEvalCoord2fv - werten die aktivierten ein- und zweidimensionalen Karten (glMap1/glMap2) aus.


Delphi-Spezifikation

procedure glEvalCoord1d(u: TGLdouble); 
procedure glEvalCoord1f(u: TGLfloat);
procedure glEvalCoord2d(u: TGLdouble; v: TGLdouble); 
procedure glEvalCoord2f(u: TGLfloat; v: TGLfloat);

Parameter

u Legt den Wert für die Gebietskoordinate (engl.: domain coordinate) u fest, bezüglich der Basisfunktion die vorher mit glMap1 oder glMap2 gesetzt wurde.
v Legt den Wert für die Gebietskoordinate v fest, bezüglich der Basisfunktion die vorher mit glMap2 gesetzt wurde. Dieses Argument ist bei glEvalCoord1 nicht vorhanden.


Delphi-Spezifikation

procedure glEvalCoord1dv(const u: PGLdouble);  
procedure glEvalCoord1fv(const u: PGLfloat); 
procedure glEvalCoord2dv(const u: PGLdouble); 
procedure glEvalCoord2fv(const u: PGLfloat);

Parameter

u Bestimmt einen Zeiger auf ein Feld welches entweder eine oder zwei Gebietskoordinaten enthält. Dier erste Koordinate repräsentiert immer u. Die zweite Koordinate ist, falls vorhanden, v und wird nur bei den glEvalCoord2-Funktionen benötigt.


Beschreibung

Info DGL.png Die Orginalspezifikation spricht von "Maps" also Karten. In der folgenden Beschreibung wird dieser Begriff durch "Bezierkurven" ersetzt. 2D-Maps entsprechen somit einem Raster/Fläche aus Bezierkurven.

glEvalCoord1 wertet die aktivierte eindemensionale Bezierkurve an der Stelle u aus. glEvalCoord2 tut das selbe mit zweidimensionalen Bezierkurve unter Benutzung von zwei Gebietswerten, u und v.
Bezierkurven werden mittels glMap1 bzw. glMap2 erstellt und durch glEnable/glDisable aktiviert und deaktiviert.


Wenn eine der glEvalCoord Funktionen ausgeführt wird, werden alle momentan aktiven Bezierkurven, welche die entsprechende Dimension haben, ausgewertet. Anschließend ist es für jede ausgewertete Karte so, als ob der zugehörige GL-Befehl aufgerufen worden wäre. Dies bedeutet, dass

  • wenn GL_MAP1_INDEX oder GL_MAP2_INDEX aktiviert wurde, wird ein glIndex Befehl simuliert.
  • wenn GL_MAP1_COLOR oder GL_MAP2_COLOR aktiviert wurde, wird ein glColor Befehl simuliert.
  • wenn GL_MAP1_NORMAL oder GL_MAP2_NORMAL aktiviert wurde, wird ein Normalenvektor berechnet.
  • wenn eine der Texurfunktionen (GL_MAP1_TEXTURE_COORD_1, GL_MAP1_TEXTURE_COORD_2, GL_MAP1_TEXTURE_COORD_3, GL_MAP1_TEXTURE_COORD_4, GL_MAP2_TEXTURE_COORD_1, GL_MAP2_TEXTURE_COORD_2, GL_MAP2_TEXTURE_COORD_3, oder GL_MAP2_TEXTURE_COORD_4) aktiviert wurde, wird ein entsprechender glTexCoord Befehl simuliert.

Die Farbe, Farbindex, Normale und Texturkoordinaten, werden jedes mal errechnet wenn die Berechunung für diese Werte aktiviert wurde (ansonsten werden die aktuellen Werte benutzt). Diese berechneten Werte überschreiben allerdings nicht die aktuelle Farbe, Farbindex, Normale oder Texturkoordiante.
Das heißt, wenn glVertex Befehle mit glEvalCoord Befehlen durchsetzt sind, werden die Farbe, Normale und Texturkoordinaten die zu dem Vertex gehören nicht von den Werten beeinflußt, die durch die glEvalCoord Befehle erzeugt werden. Überschrieben werden diese Werte nur durch die dafür vorgesehen Befehle glColor, glIndex, glNormal und glTexCoord.

Es werden keine Simulationen für Bezierkurven durchgeführt die nicht aktiv sind. Wenn mehr als eine Texturauswertung für eine bestimmte Dimension (zum Beispiel GL_MAP2_TEXTURE_COORD_1 and GL_MAP2_TEXTURE_COORD_2) aktiviert wurde, dann wird nur die Auswertung der Bezierkurve ausgeführt, welche die größere Anzahl an Koordinaten produziert (In diesem Beispiel also GL_MAP2_TEXTURE_COORD_2). Ähnlich verhält es sich mit anderen Funktionen. Es gilt:

  • GL_MAP1_VERTEX_4 dominiert GL_MAP1_VERTEX_3
  • GL_MAP2_VERTEX_4 dominiert GL_MAP2_VERTEX_3

Wenn weder eine drei- noch eine vier-Komponenten Vertexmap für die entsprechende Dimension aktiviert ist, wird der glEvalCoord Befehl ignoriert.


Wenn die automatische Normalen-Generierung durch einen Aufruf von glEnable mit dem Token GL_AUTO_NORMAL aktiviert ist, erstellt glEvalCoord2 Oberflächennormalen analytisch, unabhängig vom Inhalt oder der Aktivierung der GL_MAP2_NORMAL Karte. Wenn

m = \frac{P_{p}}{P_{u}} \times \frac{P_{p}}{P_{v}}

Dann ist die generierte normale n gleich

n = \frac{-}{ \left \Vert m \right \| }

Wenn die automatische Normalengenerierung deaktiviert wurde, wird die zugehörige Normalenkarte GL_MAP2_NORMAL, falls aktiviert, genutzt um eine Normale herzustellen. Wenn weder die automatische Generierung noch die Normalenkarte aktiviert sind, generiert glEvalCoord2 keine Normalen.



Zugehörige Wertrückgaben

glIsEnabled mit Token GL_MAP1_VERTEX_3
glIsEnabled mit Token GL_MAP1_VERTEX_4
glIsEnabled mit Token GL_MAP1_INDEX
glIsEnabled mit Token GL_MAP1_COLOR_4
glIsEnabled mit Token GL_MAP1_NORMAL
glIsEnabled mit Token GL_MAP1_TEXTURE_COORD_1
glIsEnabled mit Token GL_MAP1_TEXTURE_COORD_2
glIsEnabled mit Token GL_MAP1_TEXTURE_COORD_3
glIsEnabled mit Token GL_MAP1_TEXTURE_COORD_4
glIsEnabled mit Token GL_MAP2_VERTEX_3
glIsEnabled mit Token GL_MAP2_VERTEX_4
glIsEnabled mit Token GL_MAP2_INDEX
glIsEnabled mit Token GL_MAP2_COLOR_4
glIsEnabled mit Token GL_MAP2_NORMAL
glIsEnabled mit Token GL_MAP2_TEXTURE_COORD_1
glIsEnabled mit Token GL_MAP2_TEXTURE_COORD_2
glIsEnabled mit Token GL_MAP2_TEXTURE_COORD_3
glIsEnabled mit Token GL_MAP2_TEXTURE_COORD_4
glIsEnabled mit Token GL_AUTO_NORMAL
glGetMap


Siehe auch

glBegin, glColor, glEnable, glEvalMesh, glEvalPoint, glIndex, glMap1, glMap2, glMapGrid, glNormal, glTexCoord, glVertex

Links