Bezeichnung
gl.EvalMesh -- berechnet ein- oder zweidimensionale Gitter von Punkten oder Linien
Übersicht
gl.EvalMesh(mode, i1, i2[, j1, j2])
Beschreibung
Mit diesem Befehl kann ein ein- oder zweidimensionales Gitter von Punkten oder Linien berechnet werden. Wenn Sie die letzten beiden Parameter weglassen, wird ein eindimensionales Gitter, andernfalls ein zweidimensionales berechnet.

gl.MapGrid() und gl.EvalMesh() werden parallel verwendet, um eine Reihe von gleichmäßig verteilten Kartendomänenwerten effizient zu erzeugen und auszuwerten. gl.EvalMesh() durchläuft die ganzzahligen Domänen eines ein- oder zweidimensionalen Gittters, dessen Bereich der Domäne der durch gl.Map() angegebene Karten ist. mode bestimmt, ob die resultierenden Knoten als Punkte, Linien oder gefüllte Polygone verbunden werden (letzteres wird nur für zweidimensionale Gitter unterstützt). Im eindimensionalen Fall wird gl.EvalMesh() das Gitter so erzeugen, als ob der folgende Fragment-Code ausgeführt wurde:

 
gl.Begin(type)
For Local i = i1 To i2 Do gl.EvalCoord(i*du+u1)
gl.End()

wobei du = (u2-u1)/n und n, u1 und u2 die Argumente für den letzten gl.MapGrid() Befehl sind. type ist #GL_POINTS, wenn der Mode #GL_POINT ist oder #GL_LINES, wenn der Mode #GL_LINE ist. Die einzige absolute numerische Anforderung ist, dass wenn i = n, der aus i*du+u1 berechnete Wert genau u2 ist.

Im zweidimensionalen Fall, gl.EvalMesh(), führen Sie

 
du = (u2-u1)/n
dv = (v2-v1)/m,

aus, wobei n, u1, u2, m, v1 und v2 die Argumente für den letzten gl.MapGrid() Befehl sind. Wenn der Mode dann #GL_FILL ist, ist der Befehl gl.EvalMesh() äquivalent zu:

 
For Local j = j1 To j2 - 1
   gl.Begin(#GL_QUAD_STRIP)
   For Local i = i1 To i2
      gl.EvalCoord(i*du+u1, j*dv+v1)
      gl.EvalCoord(i*du+u1, (j+1)*dv+v1)
   Next
   gl.End()
Next

Wenn der Mode #GL_LINE ist, dann ist ein Aufruf von gl.EvalMesh() äquivalent zu:

 
For Local j = j1 To j2
   gl.Begin(#GL_LINE_STRIP)
   For Local i = i1 To i2
      gl.EvalCoord(i*du+u1, j*dv+v1)
   Next
   gl.End()
Next

For Local i = i1 To i2
   gl.Begin(#GL_LINE_STRIP)
   For Local j = j1 To j2
      gl.EvalCoord(i*du+u1, j*dv+v1)
   Next
   gl.End()
Next

Und schließlich, wenn der Mode #GL_POINT ist, dann ist ein Aufruf von gl.EvalMesh() äquivalent zu:

 
gl.Begin(#GL_POINTS)
For Local j = j1 To j2
   For Local i = i1 To i2
      gl.EvalCoord(i*du+u1, j*dv+v1)
   Next
Next
gl.End()

In allen drei Fällen sind die einzigen absoluten numerischen Anforderungen, dass wenn i = n, dann der aus i*du+u1 berechnete Wert genau u2 ist, und wenn j = m, dann ist der aus j*dv+v1 berechnete Wert genau v2.

Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.

Eingaben
mode
gibt an, ob ein Gitter aus Punkten, Linien oder Polygonen berechnet werden soll; symbolische Konstanten #GL_POINT, #GL_LINE und bei einem zweidimensionalen Gitter wird #GL_FILL akzeptiert.
i1
gibt den ersten ganzzahligen Wert für die Gitter-Domänenvariable i an
i2
gibt den letzten ganzzahligen Wert für die Gitter-Domänenvariable i an
j1
optional: Gibt den ersten ganzzahligen Wert für die Gitter-Domänenvariable j an
j2
optional: Gibt den letzten ganzzahligen Wert für die Gitter-Domänenvariable j an
Fehler
#GL_INVALID_ENUM wird generiert, wenn mode kein akzeptierter Wert ist.

#GL_INVALID_OPERATION wird erzeugt, wenn gl.EvalMesh() zwischen gl.Begin() und gl.End() ausgeführt wird.

Verbundene get-operationen
gl.Get() mit dem Argument #GL_MAP1_GRID_DOMAIN

gl.Get() mit dem Argument #GL_MAP2_GRID_DOMAIN

gl.Get() mit dem Argument #GL_MAP1_GRID_SEGMENTS

gl.Get() mit dem Argument #GL_MAP2_GRID_SEGMENTS


Navigation zeigen