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.
- Het object Vector_3D 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_3D gebruik je behalve voor het opslaan van een 3x3 matrix ook voor de vectorvoorstelling van een vlak (3 kolomvectoren).
- Als je de vector-voorstelling van een lijn wilt opslaan kun je gebruikmaken van van het object Line_3D, waarin je twee kolomvectoren kwijt kunt. Merk op dat je dit object niet zonder meer kunt gebruiken in rekenkundige bewerkingen zoals matrix- en vectorvermenigvuldiging.
- Voor het opslaan van de normaal vergelijking van een vlak gebruik je het object NormVgl_3D.
- Het object Vector_3D ziet er als volgt uit:
function Vector_3D(a,b,c)
{ this.x = a; this.y = b; this.z = c; } - In je programma maak je bijvoorbeeld de vector v = (3,4,5) aan met:
var v = new Vector_3D(3,4,5);
- Je verwijst naar de x-component met: v.x
Verwijzen naar de y- resp. z-component doe je met: v.y resp. v.z
- Het object Matrix_3D ziet er als volgt uit:
function Matrix_3D(a,b,c,d,e,f,g,h,i)
{ this.x1 = a; this.y1 = b; this.z1 = c;
this.x2 = d; this.y2 = e; this.z2 = f;
this.x3 = g; this.y3 = h; this.z3 = i; } - In je programma maak je bijvoorbeeld de matrix m = [(3,4,5),(7,8,9),(0,1,2)] aan met:
var m = new Matrix_3D(3,4,5,7,8,9,0,1,2);
- Het object Line_3D ziet er als volgt uit:
function Line_3D(a,b,c,d,e,f)
{ this.x1 = a; this.y1 = b; this.z1 = c;
this.x2 = d; this.y2 = e; this.z2 = f; } - In je programma maak je bijvoorbeeld de lijn l = (1,2,3) + λ (7,8,9) aan met:
var l = new Line_3D(1,2,3,7,8,9);
- Het object NormVgl_3D ziet er als volgt uit:
function NormVgl_3D(a,b,c,d)
{ this.xf = a; this.yf = b; this.zf = c; this.df = d; } - In je programma maak je bijvoorbeeld de (normaal-)vergelijking van het vlak 2x + 3y + 4z = 7 aan met:
var t = new NormVgl_3D(2,3,4,7);
N.B.: Een lijn kan in de ruimte ook worden voorgesteld als stelsel van twee normaalvergelijkingen, dat wil zeggen: als snijlijn van twee vlakken. Hiervoor is geen object gemaakt. - De beschikbare functions staan in de onderstaande tabellen. Hierin betekent:
- V (kolom-) vector (x,y,z)
- N normaalvergelijking van de vorm ax + by + cz = d
- M 3x3 matrix bestaande uit de kolomvectoren v1, v2 en v3
- K 3x2 matrix bestaande uit de kolomvectoren v1 en v2 (lijn)
- 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 |
Optellen | v1 + v2: vector: V | v1, v2: V | |
Aftrekken | v1 - v2: vector: V | v1, v2: V | |
Modulus | |v|: R | v: V | |
Afstand tussen twee punten | d(p1,p2): R | p1, p2: V | |
Uitwendig product van v1 en v2 | v1 x v2: V | v1, v2: V | |
Inwendig product van v1 en v2 | v1·v2: R | v1, v2: V | |
Ingesloten hoek tussen v1 en v2 in het vlak dat door v1 en v2 wordt opgespannen | <(v1,v2): R(radialen) | v1, v2: V | |
Maak een 3x3-matrix uit de kolomvectoren v1, v2 en v3 | matrix: M | v1, v2, v3: V | |
Maak een 3x2-matrix uit de kolomvectoren v1 en v2 Lijn in 3D: 2 kolomvectoren | matrix: K | v1, v2: V | |
Maak een normaalvergelijking uit de vector v en de constante c | vergelijking: N | v: V; c: R | |
ne kolom-vector uit matrix m | vector: V | m: M; n: Z+ | |
ne kolom-vector uit matrix k | vector: V | k: K; n: Z+ | |
normaalvector uit vergelijking k | vector: V | k: N | |
Determinant van matrix m | getal: R | m: M | |
Determinant van de kolom-vectorenmatrix | getal: R | v1, v2, v3: V | |
Kopie van vector v | vector: V | v: V | |
Kopie van 3x3 matrix m | matrix: M | m: M | |
Kopie van 3x2 matrix (lijn) k | matrix: K | k: K | |
Schaal de vector v met de factor r (v blijft ongewijzigd) | vector: V | v: V; r: R | |
Schaal de vector v met de factor r (v wordt overschreven) | vector: V | v: V; r: R | |
Transponeer de matrix m (m blijft ongewijzigd) | matrix: M | m: M | |
Transponeer de matrix m (m wordt overschreven) | matrix: M | m: M | |
Vermenigvuldig m met v | vector: V | m: M; v: V | |
Vermenigvuldig m1 met m2 | matrix: M | m1, 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 / Naam | Resultaat | Parameters | |
Vectorvoorstelling van een vlak opzetten aan de hand van drie punten | |||
matrix: M | p1, p2, p3: V norm: L (Richtingsvectoren normaliseren ja of nee) | ||
Vectorvoorstelling van een lijn opzetten aan de hand van twee punten | |||
matrix: K | p1, p2: V norm: L (Richtingsvector normaliseren ja of nee) | ||
Normaalvergelijking van een vlak opzetten aan de hand van drie punten | |||
vergelijking: N | p1, p2, p3: V norm: L (Normaalvector normaliseren ja of nee) | ||
Normaalvergelijking uit een vectorvoorstelling maken | |||
vergelijking: N | matrix: M norm: L (Normaalvector normaliseren ja of nee) | ||
Vectorvoorstelling van een vlak maken uit een normaalvergelijking | |||
matrix: M | vergelijking: N norm: L (Richtingsvectoren normaliseren ja of nee) | ||
Bepaal de coördinaten van een punt in een vlak, gegeven een vectorvoorstelling, λ en μ | |||
punt: V | m: M; lambda, mu: R | ||
Bepaal de coördinaten van een punt op een lijn, gegeven een vectorvoorstelling en λ | |||
punt: V | k: K; lambda: R | ||
Bepaal de afstand van een punt tot een vlak (vectorvoorstelling) | |||
afstand: R | p: V; m: M | ||
Bepaal de afstand van een punt tot een vlak (normaalvergelijking) | |||
afstand: R | p: V; n: N | ||
Bepaal de projectie van een punt op een vlak (vectorvoorstelling) | |||
punt: V | p: V; m: M | ||
Bepaal de projectie van een punt op een vlak (normaalvergelijking) | |||
punt: V | p: V; n: N | ||
Bepaal de projectie van een punt op een lijn (vectorvoorstelling) | |||
punt: V | p: V; k: K | ||
Bepaal of een punt op een vlak ligt of niet (vlak bepaald door vectorvoorstelling) | |||
logisch: L | p: V; m: M; eps: R | ||
Bepaal of een punt op een vlak ligt of niet (lijn bepaald door normaalvergelijking) | |||
logisch: L | p: V; n: N; eps: R | ||
Bepaal of een punt op een rechte lijn ligt of niet (lijn bepaald door vectorvoorstelling) | |||
logisch: L | p: V; m: M; eps: R | ||
Kijk of punt p tussen twee andere punten p1 en p2 ligt of niet | |||
logisch: L | p, p1, p2: V; eps: R | ||
Bepaal het snijpunt van een vlak en een rechte lijn (vectorvoorstellingen) | |||
punt: V | m: M; k: K | ||
Bepaal het snijpunt van een vlak (normaalvergelijking) en een lijn (vectorvoorstelling) | |||
punt: V | n: N; k: K |