LitDev 1.2.24.0 DE
http://litdev.uk/LitDev.De.html Extension API

LD3DView LDArray LDBits LDBlueTooth LDCall
LDChart LDClient LDClipboard LDColours LDCommPort
LDController LDControls LDCursors LDDataBase LDDateTime
LDDebug LDDialogs LDDictionary LDEffect LDEmail
LDEncryption LDEvents LDFastArray LDFastShapes LDFigures
LDFile LDFocus LDftp LDGeography LDGraph
LDGraphicsWindow LDHashTable LDHID LDIcon LDImage
LDInline LDIOWarrior LDList LDLogic LDMath
LDMathX LDMatrix LDMusic LDNetwork LDPhysics
LDProcess LDQueue LDRegex LDResources LDScrollBars
LDSearch LDServer LDSettings LDShapes LDShell
LDSort LDSound LDSpeech LDStatistics LDStopwatch
LDText LDTextWindow LDTimer LDTranslate LDUnits
LDUtilities LDVector LDWaveForm LDWebCam LDWindows
LDxml LDZip

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))