JavaScripts voor 2D berekeningen met vectoren

Op deze plaats worden de JavaScript functions en objecten beschreven om te rekenen met punten, lijnen en vectoren in het platte vlak. Deze functions staan in de file linalg2d.js. Je zet ze bij voorkeur in de <HEAD> van de HTML-code:

<script src="linalg2d.js"></script>

Klik hier als je de JavaScript-code wilt downloaden om in je eigen toepassing te gebruiken.

Overzicht van de beschikbare algemene functies.
NaamFunctieResultaatParameters
VAdd2D(v1,v2)Optellenv1 + v2: vector: Vv1, v2: V
VSub2D(v1,v2)Aftrekkenv1 - v2: vector: Vv1, v2: V
VNorm2D(v)Modulus|v|: Rv: V
Dist2D(p1,p2)Afstand tussen twee puntend(p1,p2): Rp1, p2: V
Dot2D(v1,v2)Inwendig product van v1 en v2v1·v2: Rv1, v2: V
Angle2D(v1,v2)Ingesloten hoek tussen v1 en v2<(v1,v2): R(radialen)v1, v2: V
SetMat2D(v1,v2)Maak een 2x2-matrix uit de kolomvectoren v1 en v2matrix: Mv1, v2: V
SetNEq2D(v,c)Maak een normaalvergelijking uit de vector v en de constante cvergelijking: Nv: V; c: R
GetVec2D(m,n)ne kolom-vector uit matrix mvector: Vm: M; n: Z+
DetMat2D(m)Determinant van matrix mgetal: Rm: M
DetVec2D(v1,v2)Determinant van de kolom-vectorenmatrix [v1,v2]getal: Rv1, v2: V
CopyVec2D(v)Kopie van vector vvector: Vv: V
CopyMat2D(m)Kopie van matrix mmatrix: Mm: M
ScaVec2D_1(v,r)Schaal de vector v met de factor r
(v blijft ongewijzigd)
vector: Vv: V; r: R
ScaVec2D_2(v,r)Schaal de vector v met de factor r
(v wordt overschreven)
vector: Vv: V; r: R
TrpMat2D_1(m)Transponeer de matrix m
(m blijft ongewijzigd)
matrix: Mm: M
TrpMat2D_2(m)Transponeer de matrix m
(m wordt overschreven)
matrix: Mm: M
InvMat2D_1(m)Inverteer de matrix m
(m blijft ongewijzigd)
matrix: Mm: M
InvMat2D_2(m)Inverteer de matrix m
(m wordt overschreven)
matrix: Mm: M
MatXVec2D(m,v)Vermenigvuldig m met vvector: Vm: M; v: V
MatXMat2D(m1,m2)Vermenigvuldig m1 met m2matrix: Mm1, m2: M
 
Merk op dat er functions zijn voor het inverteren van matrices. Deze staan er bij voor de volledigheid.
Het gebruik van een inverse matrix is in theorie een mooie methode voor het oplossen van stelsels vergelijkingen. In de praktijk gebruik je dit echter nooit, omdat bij inverteren van een matrix de conditie vaak slecht wordt. De oplossing is dan onnauwkeurig. Dat geldt zeker voor de hier besproken zaken.
Voor het oplossen van stelsels vergelijkingen (steeds 2 vergelijkingen met 2 onbekenden) wordt de Regel van Kramer gebruikt.
Overzicht van de beschikbare overige functies.
 Functie / NaamResultaatParameters
Vectorvoorstelling van een lijn opzetten aan de hand van twee punten
 Vectors_from_2points2D(p1,p2,norm)
 
matrix: Mp1, p2: V norm: L (Richtingsvector normaliseren ja of nee)
Normaalvergelijking van een lijn opzetten aan de hand van twee punten
 NormalEquation_from_2points2D(p1,p2,norm)
 
vergelijking: Np1, p2: V norm: L (Normaalvector normaliseren ja of nee)
Normaalvergelijking uit een vectorvoorstelling maken
 NormalEquation_from_Vectors2D(m,norm)
 
vergelijking: Nmatrix: M norm: L (Normaalvector normaliseren ja of nee)
Vectorvoorstelling uit een normaalvergelijking maken
 Vectors_from_NormalEquation2D(n,norm)
 
matrix: Mvergelijking: N norm: L (Richtingsvector normaliseren ja of nee)
Bepaal de coördinaten van een punt gegeven een vectorvoorstelling en λ
 Calculate_Coordinates2D(m,lambda)
 
punt: Vm: M; lambda: R
Bepaal de afstand van een punt tot een lijn (vectorvoorstelling)
 Distance_PointToLineV2D(p,m)
 
afstand: Rp: V; m: M
Bepaal de afstand van een punt tot een lijn (normaalvergelijking)
 Distance_PointToLineN2D(p,m)
 
afstand: Rp: V; n: N
Bepaal de projectie van een punt op een lijn (vectorvoorstelling)
 Project_PointToLineV2D(p,m)
 
punt: Vp: V; m: M
Bepaal de projectie van een punt op een lijn (normaalvergelijking)
 Project_PointToLineN2D(p,n)
 
punt: Vp: V; n: N
Bepaal of een punt op een rechte lijn ligt of niet (lijn bepaald door vectorvoorstelling)
 Point_on_a_LineV2D(p,m,eps)
 
logisch: Lp: V; m: M; eps: R
Bepaal of een punt op een rechte lijn ligt of niet (lijn bepaald door normaalvergelijking)
 Point_on_a_LineN2D(p,n,eps)
 
logisch: Lp: V; n: N; eps: R
Kijk of punt p tussen twee andere punten p1 en p2 ligt of niet
 Point_between_2_others2D(p,p1,p2,eps)
 
logisch: Lp, p1, p2: V; eps: R
Bepaal het snijpunt van twee rechte lijnen (vectorvoorstellingen)
 Intersection_VV2D(m1,m2)
 
punt: Vm1, m2: M
Bepaal het snijpunt van twee rechte lijnen (normaalvergelijkingen)
 Intersection_NN2D(n1,n2)
 
punt: Vn1, n2: N
Bepaal het snijpunt van twee rechte lijnen (vectorvoorstelling en normaalvergelijking)
 Intersection_VN2D(m,n)
 
punt: Vm: M; n: N

terug