WaBis

walter.bislins.ch

JSG3D: JsgVect3Grid

JsgVect3Grid Klasse

JsgVect3Grid = Array of JsgVect3List

JsgVect3 Vektoren lassen sich zu einem Gitter, das ist eine NxM Matrix von Vektoren, zusammenfassen. Aus einem solchen Gitter lässt sich eine DisplayList erzeugen, welche die Punkte des JsgVect3Grid zu Flächen verbindet.

JsgVect3Grid ist keine eigene Klasse sondern ein globales Objekt, welches JsgVect3Grid-Funktionen zur Verfügung stellt. Zur Manipulation von JsgVect3Grid-Objekten stehen die JavaScript Funktionen für Arrays zur Verfügung.

Funktionen mit JsgVect3Grid Objekten sind unter JsgVect3Grid Funktionen aufgeführt.

JsgVect3InterGrid Klasse

JsgVect3InterGrid Array of JsgVect3List

Vektoren lassen sich zu einem Gitter vom Typ JsgVect3InterGrid, das ist eine spezielle Matrix von Vektoren, zusammenfassen. Aus einem solchen Gitter lässt sich eine DisplayList erzeugen, welche die Punkte des JsgVect3InterGrid zu Flächen verbindet.

Ein VectInterGrid ist eine Matrix von Punkten in einem rechteckigen Raster. Zwischen je vier benachbarten Punkten ist jedoch ein zusätzlicher Punkt eingebaut. Die Matrix hat folgenden Aufbau:

m00   m01   m02   m03   m04   ...   m0N
   m10   m11   m12   m13   ...   m1K
m20   m21   m22   m23   m24   ...   m2N
   m30   m31   m32   m33   ...   m3K
 :
   mL0   mL1   mL2   mL3   ...   mLK
mM0   mM1   mM2   mM3   mM4   ...   mMN

Mit K = N-1 und L = M-1. Jede zweite Zeile der Matrix hat also eine Spalte weniger. Aus je 5 Punkten werden 4 Flächen generiert. Z.B:

  • Fläche1( m00, m20, m10 )
  • Fläche2( m20, m21, m10 )
  • Fläche3( m21, m01, m10 )
  • Fläche4( m01, m00, m10 )

Das JsgVect3InterGrid ist eine Erweiterung der Klasse JsgVect3Grid. Beide sind als NxM Arrays aus JsgVect3 Elementen aufgebaut. Funktionen, welche auf einem JsgVect3InterGrid basieren, interpretieren die Arrays jedoch speziell, indem einige Elemente des Arrays, welche nicht gebraucht werden, ignoriert werden.

JsgVect3Grid Funktionen

VectGridFrom3DFunc() Ereugt eine JsgVect3Grid Vektor-Gitter über eine benutzerdefinierte Funktion
VectInterGridFrom3DFunc() Ereugt eine spezielles JsgVect3Grid Vektor-Gitter mit Zwischenpunkten über eine benutzerdefinierte Funktion
JsgVect3Grid.Ok() Gibt true zurück, wenn ein Objekt vom Typ JsgVect3Grid ist
JsgVect3InterGrid.Ok() Gibt true zurück, wenn ein Objekt vom Typ JsgVect3InterGrid ist
JsgMat3.TransGrid() Multipliziert ein JsgVect3Grid Vektor-Gitter mit einer JsgMat3 Matrix
JsgCamera.TransGrid() Viewing-Transformation eines JsgVect3Grid Vektor-Gitters

JsgVect3Grid.Ok()

global JsgVect3Grid.Ok( Object )

Object: any or undefined
Return: Boolean

Gibt true zurück, wenn Object definiert ist und vom Typ JsgVect3Grid ist.

Ein Objekt ist vom Typ JsgVect3Grid, wenn Object definiert ist und ein Array ist. Der Array muss entweder leer sein oder das erste Element muss vom Typ JsgVect3List sein, siehe JsgVect3List.Ok().

Hinweis: Objekt vom Typ JsgVect3Grid und JsgVect3InterGrid lassen sich mit dieser Funktion nicht voneinander unterscheiden!

Diese Funktion ist dazu gedacht, Fälle zu unterscheiden, falls eine Funktion verschiedene Argument-Typen akzeptiert.

function myFunc( arg ) {
  if (JsgVect3Grid.Ok(arg)) {
    // handle arg as a JsgVect3Grid
  } else {
    // handle arg as something else
  }
}

JsGraph3D.VectGridFrom3DFunc()

JsGraph3D.VectGridFrom3DFun( Params )

Params = {
Func: Function( a, b, Params ) returns JsgVect3
Min, Max: Number; Optional; Default = -1, 1
Min2, Max2: Number; Optional; Default = Min, Max
Steps: Integer(>0); Optional; Default = 20
Steps2: Integer(>0); Optional; Default = Steps
Delta: Number; Optional
Delta2: Number; Optional; Default = Delta
:
}
Return: JsgVect3Grid

Erzeugt ein JsgVect3Grid aus den Vektoren, welche Func beim Aufruf zurückgibt. VectGridFrom3DFunc generiert die Werte a von Min bis Max und b von Min2 bis Max2. Mit jedem dieser Wertepaare wird Func aufgerufen. Der Wert a läuft in der inneren Schleife, b in der äusseren.

Für Properties, die in Params nicht definiert sind, werden die Defaultwerte verwendet.

Die Grösse des JsgVect3Grid kann entweder durch Angabe von Steps und Steps2 (Anzahl Schritte zwischen Min und Max) oder durch Angabe von Delta und Delta2 (Schrittweite) bestimmt werden. Wird beides angegeben, hat Steps Vorrang.

Min bzw. Min2 darf grösser als Max bzw. Max2 sein. Die Werte werden immer von Min(2) nach Max(2) generiert, in diesem Falle vom grösseren zum kleineren Wert. Das Vorzeichen von Delta(2) wird ignoriert.

In Params können beliebige weitere Parameter definiert werden. Das Argument Params wird der Funktion Func übergeben. Diese kann auf die weiteren Parameter zugreifen.

Das erzeugte JsgVect3Grid kann zum Beispiel mit der Funktion AddPointsFromVectGrid() oder AddAreasFromVectGrid() zum Zeichnen in die DisplayList eingefügt werden.

JsgVect3InterGrid.Ok()

global JsgVect3InterGrid.Ok( Object )

Object: any or undefined
Return: Boolean

Gibt true zurück, wenn Object definiert ist und vom Typ JsgVect3InterGrid ist.

Ein Objekt ist vom Typ JsgVect3InterGrid, wenn Object definiert ist und ein JsgVect3Grid ist, siehe JsgVect3Grid.Ok().

Hinweis: Objekt vom Typ JsgVect3Grid und JsgVect3InterGrid lassen sich mit dieser Funktion nicht voneinander unterscheiden!

Diese Funktion ist dazu gedacht, Fälle zu unterscheiden, falls eine Funktion verschiedene Argument-Typen akzeptiert.

function myFunc( arg ) {
  if (JsgVect3InterGrid.Ok(arg)) {
    // handle arg as a JsgVect3InterGrid
  } else {
    // handle arg as something else
  }
}

JsGraph3D.VectInterGridFrom3DFunc()

JsGraph3D.VectInterGridFrom3DFunc( aParams )

Params = {
Func: Function( a, b, Params ) returns JsgVect3
Min, Max: Number; Optional; Default = -1, 1
Min2, Max2: Number; Optional; Default = Min, Max
Steps: Integer(>0); Optional; Default = 20
Steps2: Integer(>0); Optional; Default = Steps
Delta: Number; Optional
Delta2: Number; Optional; Default = Delta
 :
}
Return: JsgVect3InterGrid

VectInterGridFrom3DFunc funktioniert analog zu VectGridFrom3DFunc(), erzeugt jedoch ein JsgVect3InterGrid.

Das erzeugte JsgVect3InterGrid kann zum Beispiel mit der Funktion AddPointsFromVectInterGrid() oder AddAreasFromVectInterGrid() zum Zeichnen in die DisplayList eingefügt werden.

Weitere Infos zur Seite
Erzeugt Mittwoch, 27. Januar 2016
von wabis
Zum Seitenanfang
Geändert Donnerstag, 18. Februar 2016
von wabis