Ligt een punt binnen een convexe vierhoek

Moderators: dirkwb, Xilvo

Berichten: 2

Ligt een punt binnen een convexe vierhoek

Hallo wiskunde knobbels,

Ik ben computer programmeur en heb helaas niet erg goed op gelet tijdens wiskunde denk ik :)

Ik heb een convexe vierhoek op mijn scherm en als ik een ergens op het scherm klik krijg ik een x,y coordinaat. Nu wil ik berekenen of dat coordinaat binnen deze vierhoek valt.

Kan iemand mij een oplossing geven.?

Re: Ligt een punt binnen een convexe vierhoek

Als de hoekpunten A,B,C en D zijn, moet je 4 vergelijkingen opstellen.

Een vergelijking van de lijn door A en B; een door B en C, een door C en D en een door D en A.

Stel de lijn door A en B heeft als vergelijking 2x + 3y = 5.

Neem een punt binnen de vierhoek (zeg (a,b))

Reken dan uit 2a+3b.

Is dat < 5, dan wordt 1 van je 4 criteria 2x + 3y < 5.

Is dat > 5, dan wordt 1 van je 4 criteria 2x + 3y > 5.

Doe dat voor alle 4 zijden.

Als je nu wilt nagaan of een punt binnen de vierhoek ligt, dan moet aan alle 4 ongelijkheden voldaan zijn.

Berichten: 2

Re: Ligt een punt binnen een convexe vierhoek

hmm dit gaat me al ver boven de pet :)

zou graag iets hebben wat ik direct in Visual basic kan intypen :)



stel ik heb een vierhoek a(110,100) , b(100,200), c(210,190), d(190,90)

hoe reken ik dan uit of x en y er binnen vallen.

sorry dat ik het niet beter snap :-)

Berichten: 2.746

Re: Ligt een punt binnen een convexe vierhoek

de uitleg van peterpan gaat gewoon over het feit dat, als een punt in een vierkant ligt, dat punt 4 keer aan de goede kant moet liggen van elk van de zijden.

Gebruikersavatar
Berichten: 6.905

Re: Ligt een punt binnen een convexe vierhoek

Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Gebruikersavatar
Berichten: 3.330

Re: Ligt een punt binnen een convexe vierhoek

Misschien nog een gedacht:

Neem kleinste en grootste x-waarde (100,190).

neem kleinste en grootste y-waarde (90,210).

Als van punt de x en y daartussen ligt dan in, anders op of erbuiten.
Volgens mijn verstand kan er niets bestaan en toch bestaat dit alles?

Gebruikersavatar
Berichten: 6.905

Re: Ligt een punt binnen een convexe vierhoek

kotje schreef:Misschien nog een gedacht:

Neem kleinste en grootste x-waarde (100,190).

neem kleinste en grootste y-waarde (90,210).

Als van punt de x en y daartussen ligt dan in, anders op of erbuiten.
ook een goede oplossing, gemakkelijker te programmeren

dit werkt effectief alleen met een convexe vierhoek (wel de vraag uit de topic)

maar het is vele handiger om dat in eens voor een onregelmatige n-hoek te weten

als dat dan in een module staat is dat voor elk nieuw programma (met andere wensen) te gebruiken
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Gebruikersavatar
Berichten: 3.330

Re: Ligt een punt binnen een convexe vierhoek

Ik denk niet dat mijn antwoord klopt, het is niet altijd geldig.
Volgens mijn verstand kan er niets bestaan en toch bestaat dit alles?

Gebruikersavatar
Berichten: 6.905

Re: Ligt een punt binnen een convexe vierhoek

Ik denk niet dat mijn antwoord klopt, het is niet altijd geldig.
indien het echt een convex vierhoek is klopt ja antwoord gedeeltelijk, er komt namelijk een nieuwe voorwaarde (die had ik ook niet gezien)

één van de zijden moet evenwijdig met een van de assen denk ik
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Gebruikersavatar
Berichten: 792

Re: Ligt een punt binnen een convexe vierhoek

Ok, een voorstel, maar weet dat ik op mijn beurt bitter weinig van programmeren weet :

Mag ik om te beginnen aannemen dat je je punten "kent". Ik bedoel weet jij als je in wijzerzin je punten afloopt welke eerst komen in je n-hoek?

Ik neem aan in wat nu volgt van wel.

Nummer je hoekpunten
\(p_1\)
tot en met
\(p_n\)
Nu werken we recursief, een punt zit "daarin" als ie in de (n-1)-hoek p_1 tot en met
\(p_{n-1} \)
ligt, of in de driehoek met hoekpunten
\(p_1 p_{n-1}\)
en
\(p_{n}\)
Uiteindelijk komt het dus neer op bepalen of een punt in een driehoek ligt. Hoe doe je dat? Laat (a,b) (c,d) en (e,f) de drie coördinaten zijn.

Ga nu na of :
\(e(d-b)+f(c-a)+(a d-bc)\)
hetzelfde teken als
\( x(d-b)+y(c-a)+(a d- b c)\)
heeft
\(c (f-b)+d (e-a)+(a f -b e)\)
hetzelfde teken als
\(x (f -b) +y(e-a) +(a f - b e) \)
heeft
\(a(f- d)+b(e-c)+(c f-d e )\)
hetzelfde teken als
\( x(f-d)+y(e-c)+(c f- d e )\)
heeft

Als alledrie de voorwaarden vervuld zijn, ligt het punt in de driehoek.

Zou moeten werken. :)

Er is trouwens wel een handige truc om de punten te genereren in de "convexe omhullende", namelijk al die barycentrische combinaties van de gegeven punten met positieve gewichten.

Gebruikersavatar
Berichten: 6.905

Re: Ligt een punt binnen een convexe vierhoek

mooie oplossing, niet zo moeilijk te programmeren
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Gebruikersavatar
Berichten: 792

Re: Ligt een punt binnen een convexe vierhoek

Nu ik erover nadenk, misschien kan het het voor n-hoeken dan evengoed zo (iets gemakkelijker misschien om te programmeren)

Reduceer niet tot het geval met driehoeken, check rechtstreeks of het voor de n zijden aan de juiste kant ligt.

Nummer weer je punten
\(p_1\)
tot en met
\(p_n\)
maar we spreken af dat we cyclisch werken, kortom, als ik bijvoorbeeld
\(p_{n+1} \)
schrijf dan bedoel ik daarmee gewoon weer p_{1}

check nu gewoon of voor elke i van 1 tot n geldt dat :
\(x_{i+2}(y_{i+1}-y_{i})+y_{i+2}(x_{i+1}-x_{i})+(x_{i} y_{i+1}- x_{i+1}y_{i})\)
hetzelfde teken als
\(x(y_{i+1}-y_{i})+y(x_{i+1}-x_{i})+(x_{i} y_{i+1}- x_{i+1}y_{i})\)
Nu ben ik niet zo goed in programmeren maar dat moet wel te doen zijn zeker?

Gebruikersavatar
Berichten: 6.905

Re: Ligt een punt binnen een convexe vierhoek

dat is dan de oplossing zoals PeterPan

moet wel lukken om te maken
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Gebruikersavatar
Berichten: 792

Re: Ligt een punt binnen een convexe vierhoek

jhnbk schreef:dat is dan de oplossing zoals PeterPan

moet wel lukken om te maken
Inderdaad, het enige grote verschil is dat ik een formule gebruik die ook in uitzonderingsgevallen zal werken.

Gebruikersavatar
Berichten: 6.905

Re: Ligt een punt binnen een convexe vierhoek

ja, en dat is idd ook wel belangrijk
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Reageer