LitDev 1.2.24.0 DE
http://litdev.uk/LitDev.De.html Extension API
LDVector
Algebraische 3D Vektormethoden (hilfreich für Berechnungen in 'LD3DView').
Alle Vektoren oder Punkte sind 3-element. Arrays der Form "1=x;2=y;3=z;".
Zur Verwendung als 2D Vektoren als "1=x;2=y;3=0;".
example http://de.wikipedia.org/wiki/Vektor
http://chortle.ccsu.edu/VectorLessons/vectorIndex.html
Add | AngleBetween | CrossProduct |
DotProduct | Length | Multiply |
Normalise | Rotate | RotatePoint |
Subtract |
Add(vector1,vector2)
Ermittelt (komponentenweise) die Summe zweier Vektoren bzw. Vektorverschiebung.
vector1 Der erste Vektor.
vector2 Der zweite Vektor.
returns Der Summenvektor (Resultierende) bei Erfolg, sonst "".
AngleBetween(vector1,vector2)
Ermittelt den Winkel zwischen zwei Vektoren.
vector1 Der erste Vektor.
vector2 Der zweite Vektor.
returns Der Winkel (0 bis +180°) zwischen den beiden Vektoren bei Erfolg, sonst "".
example 'v zu Kugelkoord(r,theta,phi)
vT = v
vT[3] = 0 'tmp 2D [x,y,0]
vX = "1=1;2=0;3=0;"
vZ = "1=0;2=0;3=1;"
r = LDVector.Length(v)
theta = LDVector.AngleBetween(v,vZ)
phi = LDVector.AngleBetween(vT,vX)
'v zu Zylinderkoord(rho,phi,z)
rho = LDVector.Length(vT)
phi = LDVector.AngleBetween(vT,vX)
z = v[3]
'Atan2(x,y) [0°,+/-180°]
P = "1="+x+";2="+y+";3=0;"
x = "1=1;2=0;3=0;"
w = LDVector.AngleBetween(P,x) ' *sgn(y)
w = w * LDLogic.Switch(LDLogic.LT(y,0), -1,1)
CrossProduct(vector1,vector2)
Ermittelt das (äußere) Kreuz-/Vektorprodukt zweier 3D Vektoren (v1 x v2).
Dies ist der Normalvektor zur aufgespannten Vektorenebene, im Rechtssystem.
Für Betrag des Ergebnisvektors |v1 x v2| gilt:
|v1|*|v2| v1 -/+90° v2
<0 0-180°, Uhrzeigersinn
=0 v1||v2
>0 180-360°, Gegenuhrzeigersinn
vector1 Der erste Vektor.
vector2 Der zweite Vektor.
returns Der Ergebnisvektor (Nullvektor für parallele Vektoren) bei Erfolg, sonst "".
example http://de.wikipedia.org/wiki/Kreuzprodukt
DotProduct(vector1,vector2)
Ermittelt das (innere) Skalarprodukt zweier Vektoren, |v1|*|v2| * cos(AngleBetween) = x1*x2 + y1*y2 + z1*z2.
vector1 Der erste Vektor.
vector2 Der zweite Vektor.
returns Der Zahlenwert für das Skalarprodukt bei Erfolg, sonst "".
<0 stumpfwinkelig
=0 rechtwinkelig
>0 spitzwinkelig
(-) |v1|*|v2| (entgegen) parallel
example http://de.wikipedia.org/wiki/Skalarprodukt
LDVector.DotProduct(v,v) = |v|*|v|
Length(vector)
Ermittelt die Länge/Betrag/Norm (|vector|) für einen Vektor.
vector Der Vektor.
returns Die Vektorlänge bei Erfolg, sonst "".
example |v| = Math.SquareRoot(v[1]*v[1] + v[2]*v[2] + v[3]*v[3])
'Kameradistanz zum Ursprung
dist = LDVector.Length(LD3DView.GetCameraPosition(view))
'Länge/Betrag aus Skalarprodukt
len = Math.SquareRoot(LDVector.DotProduct(v,v))
Multiply(vector,scalar)
Multipliziert einen Vektor komponentenweise mit einem Skalar.
Verlängert oder kürzt die Länge des Vektors um den angegebenen Faktor. Bei negativem Skalar wird auch die Richtung umgekehrt.
vector Der Vektor.
scalar Der skalare Faktor zur Längenänderung des Vektors.
returns Der skalierte Vektor bei Erfolg, sonst "".
example 'Vektor v zu Länge l skaliert
vL = LDVector.Multiply(v, l/LDVector.Length(v))
vL = LDVector.Multiply(LDVector.Normalise(v), l)
Normalise(vector)
Normalisiert einen Vektor zur Einheitslänge (gleiche Richtung).
Division der einzelnen Komponenten durch die Länge.
vector Der Vektor.
returns Der skalierte Einheitsvektor (Länge = 1) bei Erfolg, sonst "".
example vN = LDVector.Multiply(v, 1/LDVector.Length(v))
Rotate(vector,about,angle)
Rotiert einen Vektor um eine Drehachse (als Richtungsvektor definiert).
vector Der zu drehende Vektor.
about Der Richtungsvektor der Drehachse um die gedreht wird.
angle Der Winkel [°] um den der Vektor gedreht wird.
returns Der rotierte Vektor bei Erfolg, sonst "".
RotatePoint(point,center,about,angle)
Rotiert einen Punkt um einen angegebenen Zentralpunkt und Richtung.
point Der zu drehende Punkt.
center Der Zentralpunkt um den gedreht wird.
about Der Richtungsvektor der Drehachse um die gedreht wird.
angle Der Winkel [°] um den der Punkt gedreht wird.
returns Der gedrehte Punkt bei Erfolg, sonst "".
Subtract(vector1,vector2)
Ermittelt (komponentenweise) die Differenz zweier Vektoren (Addition mit Gegenvektor von vector2) bzw. Vektorverschiebung.
vector1 Der erste Vektor.
vector2 Der zweite Vektor (zur Subtraktion von vector1).
returns Der Differenzvektor bei Erfolg, sonst "".
example dif = LDVector.Subtract(v1,v2)
dif = LDVector.Add(v1,LDVector.Multiply(v2,-1))