JavaScripts voor 3D 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 linalg3d.js. Je zet ze bij voorkeur in de <HEAD> van de HTML-code:

<script src="linalg3d.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
VAdd3D(v1,v2)Optellenv1 + v2: vector: Vv1, v2: V
VSub3D(v1,v2)Aftrekkenv1 - v2: vector: Vv1, v2: V
VNorm3D(v)Modulus|v|: Rv: V
Dist3D(p1,p2)Afstand tussen twee puntend(p1,p2): Rp1, p2: V
Cross3D(v1,v2)Uitwendig product van v1 en v2v1 x v2: Vv1, v2: V
Dot3D(v1,v2)Inwendig product van v1 en v2v1·v2: Rv1, v2: V
Angle3D(v1,v2)Ingesloten hoek tussen v1 en v2
in het vlak dat door v1 en v2 wordt opgespannen
<(v1,v2): R(radialen)v1, v2: V
SetMat3D(v1,v2,v3)Maak een 3x3-matrix uit de kolomvectoren v1, v2 en v3matrix: Mv1, v2, v3: V
SetLine3D(v1,v2)Maak een 3x2-matrix uit de kolomvectoren v1 en v2
Lijn in 3D: 2 kolomvectoren
matrix: Kv1, v2: V
SetNormEq3D(v,c)Maak een normaalvergelijking uit de vector v en de constante cvergelijking: Nv: V; c: R
GetVecM3D(m,n)ne kolom-vector uit matrix mvector: Vm: M; n: Z+
GetVecL3D(k,n)ne kolom-vector uit matrix kvector: Vk: K; n: Z+
GetVecN3D(k)normaalvector uit vergelijking kvector: Vk: N
DetMat3D(m)Determinant van matrix mgetal: Rm: M
DetVec3D(v1,v2,v3)Determinant van de kolom-vectorenmatrix [v1,v2,v3]getal: Rv1, v2, v3: V
CopyVec3D(v)Kopie van vector vvector: Vv: V
CopyMat3D(m)Kopie van 3x3 matrix mmatrix: Mm: M
CopyLine3D(k)Kopie van 3x2 matrix (lijn) kmatrix: Kk: K
ScaVec3D_1(v,r)Schaal de vector v met de factor r
(v blijft ongewijzigd)
vector: Vv: V; r: R
ScaVec3D_2(v,r)Schaal de vector v met de factor r
(v wordt overschreven)
vector: Vv: V; r: R
TrpMat3D_1(m)Transponeer de matrix m
(m blijft ongewijzigd)
matrix: Mm: M
TrpMat3D_2(m)Transponeer de matrix m
(m wordt overschreven)
matrix: Mm: M
MatXVec3D(m,v)Vermenigvuldig m met vvector: Vm: M; v: V
MatXMat3D(m1,m2)Vermenigvuldig m1 met m2matrix: Mm1, m2: M
 
Merk op dat er geen functions zijn voor het inverteren van matrices.
Het gebruik van een inverse matrix is in theorie een mooie methode voor het oplossen van stelsels vergelijkingen. In de praktijk gebruik je dit 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 3 vergelijkingen met 3 onbekenden) wordt de Regel van Kramer gebruikt.
 
Overzicht van de beschikbare overige functies.
 Functie / NaamResultaatParameters
Vectorvoorstelling van een vlak opzetten aan de hand van drie punten
 Vectors_from_3points3D(p1,p2,p3,norm)
 
matrix: Mp1, p2, p3: V norm: L (Richtingsvectoren normaliseren ja of nee)
Vectorvoorstelling van een lijn opzetten aan de hand van twee punten
 Vectors_from_2points3D(p1,p2,norm)
 
matrix: Kp1, p2: V norm: L (Richtingsvector normaliseren ja of nee)
Normaalvergelijking van een vlak opzetten aan de hand van drie punten
 NormalEquation_from_3points3D(p1,p2,p3,norm)
 
vergelijking: Np1, p2, p3: V norm: L (Normaalvector normaliseren ja of nee)
Normaalvergelijking uit een vectorvoorstelling maken
 NormalEquation_from_Vectors3D(m,norm)
 
vergelijking: Nmatrix: M norm: L (Normaalvector normaliseren ja of nee)
Vectorvoorstelling van een vlak maken uit een normaalvergelijking
 Vectors_from_NormalEquation3D(n,norm)
 
matrix: Mvergelijking: N norm: L (Richtingsvectoren normaliseren ja of nee)
Bepaal de coördinaten van een punt in een vlak, gegeven een vectorvoorstelling, λ en μ
 Calculate_CoordinatesP3D(m,lambda.mu)
 
punt: Vm: M; lambda, mu: R
Bepaal de coördinaten van een punt op een lijn, gegeven een vectorvoorstelling en λ
 Calculate_CoordinatesL3D(k,lambda)
 
punt: Vk: K; lambda: R
Bepaal de afstand van een punt tot een vlak (vectorvoorstelling)
 Distance_PointToPlaneVP3D(p,m)
 
afstand: Rp: V; m: M
Bepaal de afstand van een punt tot een vlak (normaalvergelijking)
 Distance_PointToPlaneNP3D(p,n)
 
afstand: Rp: V; n: N
Bepaal de projectie van een punt op een vlak (vectorvoorstelling)
 Project_PointToPlaneVP3D(p,m)
 
punt: Vp: V; m: M
Bepaal de projectie van een punt op een vlak (normaalvergelijking)
 Project_PointToPlaneNP3D(p,n)
 
punt: Vp: V; n: N
Bepaal de projectie van een punt op een lijn (vectorvoorstelling)
 Project_PointToLineVL3D(p,k)
 
punt: Vp: V; k: K
Bepaal of een punt op een vlak ligt of niet (vlak bepaald door vectorvoorstelling)
 Point_on_a_PlaneV3D(p,m,eps)
 
logisch: Lp: V; m: M; eps: R
Bepaal of een punt op een vlak ligt of niet (lijn bepaald door normaalvergelijking)
 Point_on_a_PlaneN3D(p,n,eps)
 
logisch: Lp: V; n: N; eps: R
Bepaal of een punt op een rechte lijn ligt of niet (lijn bepaald door vectorvoorstelling)
 Point_on_a_LineV3D(p,m,eps)
 
logisch: Lp: V; m: M; eps: R
Kijk of punt p tussen twee andere punten p1 en p2 ligt of niet
 Point_between_2_others3D(p,p1,p2,eps)
 
logisch: Lp, p1, p2: V; eps: R
Bepaal het snijpunt van een vlak en een rechte lijn (vectorvoorstellingen)
 Intersection_VVL3D(m,k)
 
punt: Vm: M; k: K
Bepaal het snijpunt van een vlak (normaalvergelijking) en een lijn (vectorvoorstelling)
 Intersection_VNL3D(n,k)
 
punt: Vn: N; k: K

terug