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.
- Het object Vector_2D gebruik je om de componenten van een vector in op slaan, maar ook voor de coördinaten van een punt. (Een punt wordt beschouwd als plaatsvector).
- Het object Matrix_2D gebruik je behalve voor het opslaan van een 2x2 matrix ook voor de vectorvoorstelling van een lijn (2 kolomvectoren).
- Voor het opslaan van een normaal vergelijking gebruik je het object NormVgl_2D.
- Het object Vector_2D ziet er als volgt uit:
function Vector_2D(a,b)
{ this.x = a; this.y = b; } - In je programma maak je bijvoorbeeld de vector v = (3,4) aan met:
var v = new Vector_2D(3,4);
- Je verwijst naar de x-component met: v.x
Verwijzen naar de y-component doe je met: v.y
- Het object Matrix_2D ziet er als volgt uit:
function Matrix_2D(a,b,c,d)
{ this.x1 = a; this.y1 = b; this.x2 = c; this.y2 = d; } - In je programma maak je bijvoorbeeld de matrix m = [(3,4),(7,8)] aan met:
var m = new Matrix_2D(3,4,7,8);
- Het object NormVgl_2D ziet er als volgt uit:
function NormVgl_2D(a,b,c)
{ this.xf = a; this.yf = b; this.cf = c; } - In je programma maak je bijvoorbeeld de (normaal-)vergelijking van de
lijn 2x + 3y = 7 aan met:var t = new NormVgl_2D(2,3,7);
- De beschikbare functions staan in de onderstaande tabellen. Hierin betekent:
- V (kolom-) vector (x,y)
- N normaalvergelijking van de vorm ax + by = c
- M 2x2 matrix bestaande uit de kolomvectoren v1 en v2
- R reëel getal
- L logische waarde: true of false
- Z+ geheel getal > 0.
- Zie ook de rekenvoorbeelden elders in dit project.
Overzicht van de beschikbare algemene functies.
Naam Functie Resultaat Parameters VAdd2D(v1,v2) Optellen v1 + v2: vector: V v1, v2: V VSub2D(v1,v2) Aftrekken v1 - v2: vector: V v1, v2: V VNorm2D(v) Modulus |v|: R v: V Dist2D(p1,p2) Afstand tussen twee punten d(p1,p2): R p1, p2: V Dot2D(v1,v2) Inwendig product van v1 en v2 v1·v2: R v1, 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 v2 matrix: M v1, v2: V SetNEq2D(v,c) Maak een normaalvergelijking uit de vector v en de constante c vergelijking: N v: V; c: R GetVec2D(m,n) ne kolom-vector uit matrix m vector: V m: M; n: Z+ DetMat2D(m) Determinant van matrix m getal: R m: M DetVec2D(v1,v2) Determinant van de kolom-vectorenmatrix [v1,v2] getal: R v1, v2: V CopyVec2D(v) Kopie van vector v vector: V v: V CopyMat2D(m) Kopie van matrix m matrix: M m: M ScaVec2D_1(v,r) Schaal de vector v met de factor r
(v blijft ongewijzigd)vector: V v: V; r: R ScaVec2D_2(v,r) Schaal de vector v met de factor r
(v wordt overschreven)vector: V v: V; r: R TrpMat2D_1(m) Transponeer de matrix m
(m blijft ongewijzigd)matrix: M m: M TrpMat2D_2(m) Transponeer de matrix m
(m wordt overschreven)matrix: M m: M InvMat2D_1(m) Inverteer de matrix m
(m blijft ongewijzigd)matrix: M m: M InvMat2D_2(m) Inverteer de matrix m
(m wordt overschreven)matrix: M m: M MatXVec2D(m,v) Vermenigvuldig m met v vector: V m: M; v: V MatXMat2D(m1,m2) Vermenigvuldig m1 met m2 matrix: M m1, 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 / Naam Resultaat Parameters Vectorvoorstelling van een lijn opzetten aan de hand van twee punten Vectors_from_2points2D(p1,p2,norm)
matrix: M p1, 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: N p1, p2: V norm: L (Normaalvector normaliseren ja of nee) Normaalvergelijking uit een vectorvoorstelling maken NormalEquation_from_Vectors2D(m,norm)
vergelijking: N matrix: M norm: L (Normaalvector normaliseren ja of nee) Vectorvoorstelling uit een normaalvergelijking maken Vectors_from_NormalEquation2D(n,norm)
matrix: M vergelijking: N norm: L (Richtingsvector normaliseren ja of nee) Bepaal de coördinaten van een punt gegeven een vectorvoorstelling en λ Calculate_Coordinates2D(m,lambda)
punt: V m: M; lambda: R Bepaal de afstand van een punt tot een lijn (vectorvoorstelling) Distance_PointToLineV2D(p,m)
afstand: R p: V; m: M Bepaal de afstand van een punt tot een lijn (normaalvergelijking) Distance_PointToLineN2D(p,m)
afstand: R p: V; n: N Bepaal de projectie van een punt op een lijn (vectorvoorstelling) Project_PointToLineV2D(p,m)
punt: V p: V; m: M Bepaal de projectie van een punt op een lijn (normaalvergelijking) Project_PointToLineN2D(p,n)
punt: V p: 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: L p: 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: L p: 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: L p, p1, p2: V; eps: R Bepaal het snijpunt van twee rechte lijnen (vectorvoorstellingen) Intersection_VV2D(m1,m2)
punt: V m1, m2: M Bepaal het snijpunt van twee rechte lijnen (normaalvergelijkingen) Intersection_NN2D(n1,n2)
punt: V n1, n2: N Bepaal het snijpunt van twee rechte lijnen (vectorvoorstelling en normaalvergelijking) Intersection_VN2D(m,n)
punt: V m: M; n: N