\require{AMSmath}
WisFaq - de digitale vraagbaak voor wiskunde en wiskunde onderwijs


Printen

Snijpunt van twee haaks op elkaar staande lijnen

Voor een computerprogramma heb ik een formule nodig die het snijpunt van twee lijnen die haaks op elkaar staan uitrekent. Van beide lijnen weet ik één punt dat ze raken, en de richting (tov de y-as).
Tijdens het zelf proberen op te lossen van het probleem, liep ik tegen twee problemen aan:
- Een van de lijnen kan recht omhoog lopen, een formule à la ax+b gaat daar de mist in, aangezien a oneindig groot zou worden.
- Ik kan het programma niet iedere keer een vergelijking laten oplossen, het moet echt een (of meerdere) formule(s) zijn.

Alvast bedankt

Rembra
Leerling bovenbouw havo-vwo - maandag 29 maart 2004

Antwoord

Als twee lijnen loodrecht op elkaar staan, dan geldt voor de richtingscoefficienten: rico1*rico2=-1.
Als dus lijn 1 een richtingscoefficient a heeft heeft lijn 2 richtingscoefficient -1/a, behalve als a=0.


Stel je hebt twee lijnen:
y=ax+b en y=cx+d dan kun je het snijpunt berekenen door ax+b gelijk te stellen aan cx+d:
ax+b=cx+d =ax-cx=d-b = (a-c)x=d-b =
x=(d-b)/(a-c).


Nu jouw probleem:


Je hebt de lijn door (xp,yp) met rico a, en de lijn door (xq,yq) met rico -1/a.
De eerste lijn heeft vergelijking y=ax+b, met b=yp-a*xp
De tweede lijn heeft vergelijking y=cx+d met c=-1/a en d=yq-c*xq
Als a=0, dan is het simpel:
Voor het snijpunt geldt:
x=xq, y=yp.

Het volgende programmadeel zou dus in principe het snijpunt moeten leveren:
ALS a=0
DAN
x=xq
y=yp
ANDERS
c=-1/a
b=yp-a*xp
d=yq-c*xq
x=(d-b)/(a-c)
y=a*x+b
EINDALS

Maar het kan handiger:
Kijk nog eens naar de uitdrukking voor x:
x=(d-b)/(a-c)

d-b=yq-cxq-yp+a*xp
Vermenigvuldig dit met a en bedenk a*c=-1:
Je krijgt dan:
a*(d-b)=a*yq+xq-a*yp+a^2*xp
Je moet nu ook (a-c) met a vermenigvuldigen:
a(a-c)=a^2-ac=a^2+1.
Dit levert dus
x=(a*yq+xq-a*yp+a^2*xp)/(a^2+1)
Als a=0 levert dit: xq/1=xq: precies wat we willen.
y kun je dan weer berekenen met y=a*x+b.
Als a=0 levert dit y=b, maar b=yp-a*xp. Als a=0 levert dit dus y=yp.Precies wat we willen.

Nu hebben we dus een formule "in een klap" en is ALS niet meer nodig:
x=(a*yq+xq-a*yp+a^2*xp)/(a^2+1)
y=a*(x-xp)+yp


maandag 29 maart 2004

©2001-2024 WisFaq