WaBis

walter.bislins.ch

JSG: JsgVect2

JsgVect2 ist eine Klasse für 2-dimensionale Vektoren (2D-Vektoren).

JsgVect2 Klasse

JsgVect2 = Array[2] of Number = [ x, y ]

Ein 2D-Vektor wird als Array der Grösse 2 dargestellt. Auf die einzelnen Komponenten des Vektors kann über ihren Index zugegriffen werden: x-Komponente = v[0] usw.

Anstelle der Funktionen wie JsgVect2.New() zum Erzeugen von JsgVect2 Objekten kann auch direkt ein Array [ x, y ] verwendet werden.

JsgVect2 Objekte können mit JsgMat2 und JsgMat2 Matrizen transformiert werden.

JsgVect2 Funktionen

JsgVect2.New() Erzeugt ein JsgVect2 Objekt (2D-Vektor)
JsgVect2.Set() Ändert die Koordinaten eines bestehenden Vektors
JsgVect2.Null() Erzeugt einen 3D Null-Vektor
JsgVect2.Ok() Testet, ob das Objekt vom Typ Array ist
JsgVect2.Scale() Gibt einen neuen skalierten Vektor zurück
JsgVect2.Add() Gibt den Summen-Vektor zweier Vektoren zurück
JsgVect2.Sub() Gibt den Differenz-Vektor zweier Vektoren zurück
JsgVect2.Length2() Berechnet die Länge eines Vektors im Quadrat
JsgVect2.Length() Berechnet die Länge eines Vektors
JsgVect2.Norm() Gibt einen neuen normierten Vektor zurück
JsgVect2.ScalarProd() Berechnet das Skalaprodukt zweier Vektoren
JsgVect2.VectProd() Berechnet den Betrag des Vecktorproduktes zweier Vektoren
JsgVect2.Rotate() Rotiert einen Vektor um einen Winkel
JsgVect2.Angle() Berechnet den Winkel zwischen zwei Vektoren

JsgVect2.New()

global JsgVect2.New( x, y )

x, y: Number
Komponenten des Vektors
Return: JsgVect2

Erzeugt ein JsgVect2 Objekt mit den angegeben Koordinaten. Ein JsgVect2 Objekt kann auch einfach als Array erzeugt werden:

var v = [ x, y ];  // = JsgVect2.New( x, y );

JsgVect2.Set()

global JsgVect2.Set( v, x, y )

v: JsgVect2
zu ändernder Vektor
x, y: Number
neue Koordinaten
Return v: JsgVect2

Ändert die Koordinaten des Vektors v zu x/y.

JsgVect2.Null()

global JsgVect2.Null( )

Return: JsgVect2

Erzeugt einen JsgVect2 Objekt mit allen Koordinaten = 0, also einen Null-Vektor.

JsgVect2.Ok()

global JsgVect2.Ok( Any )

Any: -
Irgend ein Objekt oder undefiniert
Return: Boolean
true, wenn Any ein Array ist

Diese Funktion kann dazu verwendet werden, um zu prüfen, ob eine Variable oder ein Funktions-Parameter definiert ist und allenfalls vom Typ JsgVect2 ist. Letzteres wird aus Performacegründen nicht komplett getestet. So wird nur geschaut, ob es sich um einen beliebigen Array handelt.

Die Funktion Ok ist wiefolgt implementiert:

function JsgVect2.Ok( Any ) {
  return xArray(Any);
}

JsgVect2.Scale()

global JsgVect2.Scale( Vect, s )

Vect: JsgVect2
Ursprungs-Vektor
s: Number
Skalierungsfaktor
Return: JsgVect2
neuer skalierter Vektor

Gibt einen neuen Vektor zurück, der aus Vect gebildet wird, indem seine Komponenten mit s multipliziert werden.

JsgVect2.Add()

global JsgVect2.Add( VectA, VectB )

VectA, VectB: JsgVect2
Return: JsgVect2

Führt eine Vektor-Addition mit den beiden Vektoren VectA und VectB aus und gibt als Resultat einen neuen Vektor vom Type JsgVect2 zurück.

JsgVect2.Sub()

global JsgVect2.Sub( VectA, VectB )

VectA, VectB: JsgVect2
Return: JsgVect2

Führt eine Vektor-Subtraktion VectA minus VectB aus und gibt als Resultat einen neuen Vektor vom Typ JsgVect2 zurück.

JsgVect2.Length2()

global JsgVect2.Length2( Vect )

Vect: JsgVect2
Return: Number(>=0)

Gibt das Quadrat der Länge des Vektors Vect zurück.

JsgVect2.Length()

global JsgVect2.Length( Vect )

Vect: JsgVect2
Return: Number(>=0)

Gibt die Länge des Vektors Vect zurück.

JsgVect2.Norm()

global JsgVect2.Norm( Vect )

Vect: JsgVect2
Return: JsgVect2

Erzeugt aus Vect einen neuen Vektor, der die selbe Richtung aber die Länge 1 hat. Wenn Vect der Null-Vektor ist (seine Länge ist 0), so wird ein neuer Null-Vektor zurückgegeben.

JsgVect2.ScalarProd()

global JsgVect2.ScalarProd( VectA, VectB )

VectA, VectB: JsgVect2
Return: Number

Gibt das Skalarproduk der beiden Vektoren VectA und VectB zurück.

JsgVect2.VectProd()

global JsgVect2.VectProd( VectA, VectB )

VectA, VectB: JsgVect2
Return: Number

Gibt den Betrag des Vektorproduktes der beiden Vektoren VectA und VectB zurück.

Der Betrag des Vektorproduktes berechnet sich nach der Formel:

s = VectA[0] * VectB[1] - VectA[1] * VectB[0]

Dies entspricht dem Skalarprodukt des Vektors VectA mit dem um 90 Grad im Gegenuhrzeigersinn gedrehten Vektors VectB.

JsgVect2.Rotate()

global JsgVect2.Rotate( Vect, Angle )

Vect: JsgVect2
Angle: Number
Return: JsgVect2

Kopiert den Vektor Vect und rotiert die Kopie um den Winkel Angle. Die rotierte Kopie wird zurückgegeben. Angle muss in Radian angegeben werden. Positive Werte rotieren gegen den Uhrzeigersinn.

JsgVect2.Angle()

global JsgVect2.Angle( VectA, VectB )

VectA, VectB: JsgVect2
Return: Number

Gibt den Winkel zwischen den zwei Vektoren VectA und VectB in Radian zurück. Die beiden Vektoren müssen Normiert sein, siehe JsgVect2.Norm(). Der Winkel wird vom Vektor VectA aus zum Vektor VectB gemessen. Positive Werte bedeuten eine Rotation im Gegenuhrzeigersinn. Der berechnete Winkel hat einen Wertebereich von π < ωπ.

Weitere Infos zur Seite
Erzeugt Dienstag, 2. Februar 2016
von wabis
Zum Seitenanfang
Geändert Montag, 18. September 2017
von wabis