- ik weet de coordinaten van 2 rechten AB en CD
- ik weet dat AB en CD elkaar snijden in punt X
- ik weet de coordinaten van een willekeurig punt P
Nu zoek ik een formule om te bepalen binnen welke driehoek/vlak punt P ligt... zonder allemaal losse vergelijkingen te hoeven maken. Dus ik zoek de coordinaten van de driehoek ADX of ACX of CBX of BDX.Floris
19-7-2004
We gaan uit van de punten A(a1,a2), B(b1,b2), C(c1,c2) en D(d1,d2) en punt P(p1,p2)
Het snijpunt X(x1,x2) van AB en CD kunnen we als volgt berekenen:
m1=a2-b2
m2=b1-a1
n1=c2-d2
n2=d1-c1
i=m1*a1+m2*a2
j=n1*c1+n2*c2
det=n2*m1-m2*n1
x1=(n2*i-m2*j)/det en
x2=(m1*j-n1*i)/det
Als we nu aannemen dat X op de lijnstukken AB en CD ligt dan kunnen we als volgt te werk gaan:
We gaan nu een coordinaten transformatie uitvoeren zo, dat punt X in de oorsprong komt te liggen.
De vectoren r=XB en s=XD beschouwen we nu als basis van het vlak. Dan geldt:
r1=b1-x1
r2=b2-x2
s1=d1-x1
s2=d2-x2
We bekijken de vector pa=XP
pa1=p1-x1
pa2=p2-x2
We gaan nu pa schrijven als lineaire combinatie van r en s, dus pa=labda*r+mu*s.
De getallen labda en mu berekenen we als volgt:
det=r1*s2-r2*s1
labda=(pa1*s2-pa2*s1)/det
mu=(pa2*r1-pa1*r2)/det.
Er geldt nu:
Als labda0 dan is B een hoekpunt van de gezochte figuur.
Als labda0 dan is A een hoekpunt van de gezochte figuur.
Als mu0 dan is D een hoekpunt van de gezochte figuur.
Als mu0 dan is C een hoekpunt van de gezochte figuur.
Helaas is het natuurlijk niet zo dat elk willekeurig punt P binnen een van de driehoeken ACX, BCX, ADX of BDX ligt. Het kan zijn dat P buiten vierhoek ACBD ligt.
Dit kunnen we als volgt nagaan:
We berekenen de lengtes van de vectoren XA, XB, XC en XD als volgt
lengtea=Ö((a1-x1)^2+(a2-x2)^2)
lengteb=Ö(r12+r22)
lengtec=Ö((c1-x1)2+(c2-x2)2)
lengted=Ö(s12+s22)
Als labda0 dan labda=labda*lengteb/lengtea
Als mu0 dan mu=mu*lengted/lengtec.
Als nu |labda|+|mu|1 dan ligt P binnen vierhoek ACBD dus binnen een van de driehoeken ACX, BCX, ADX of BDX.
hk
11-8-2004
#26236 - Ruimtemeetkunde - Iets anders