Springen naar inhoud

Ligt een punt binnen een convexe vierhoek


  • Log in om te kunnen reageren

#1

rudiman

    rudiman


  • 0 - 25 berichten
  • 2 berichten
  • Gebruiker

Geplaatst op 23 januari 2007 - 16:23

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.?

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

*_gast_PeterPan_*

  • Gast

Geplaatst op 23 januari 2007 - 17:33

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.

#3

rudiman

    rudiman


  • 0 - 25 berichten
  • 2 berichten
  • Gebruiker

Geplaatst op 23 januari 2007 - 17:45

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 :-)

#4

stoker

    stoker


  • >1k berichten
  • 2746 berichten
  • Ervaren gebruiker

Geplaatst op 23 januari 2007 - 18:02

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.

#5

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 23 januari 2007 - 18:11

http://vb-helper.com...in_polygon.html
andere methode als aangebracht
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.

#6

kotje

    kotje


  • >1k berichten
  • 3330 berichten
  • Verbannen

Geplaatst op 24 januari 2007 - 13:22

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?

#7

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 24 januari 2007 - 13:31

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.

#8

kotje

    kotje


  • >1k berichten
  • 3330 berichten
  • Verbannen

Geplaatst op 24 januari 2007 - 13:34

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

#9

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 24 januari 2007 - 13:49

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.

#10

evilbu

    evilbu


  • >250 berichten
  • 792 berichten
  • Ervaren gebruiker

Geplaatst op 24 januari 2007 - 15:59

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 LaTeX tot en met LaTeX
Nu werken we recursief, een punt zit "daarin" als ie in de (n-1)-hoek p_1 tot en met LaTeX ligt, of in de driehoek met hoekpunten LaTeX en LaTeX
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 :
LaTeX hetzelfde teken alsLaTeX heeft
LaTeX hetzelfde teken als LaTeX heeft
LaTeX hetzelfde teken als LaTeX 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.

#11

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 24 januari 2007 - 16:12

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.

#12

evilbu

    evilbu


  • >250 berichten
  • 792 berichten
  • Ervaren gebruiker

Geplaatst op 24 januari 2007 - 16:40

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 LaTeX tot en met LaTeX maar we spreken af dat we cyclisch werken, kortom, als ik bijvoorbeeld LaTeX schrijf dan bedoel ik daarmee gewoon weer p_{1}

check nu gewoon of voor elke i van 1 tot n geldt dat :

LaTeX hetzelfde teken als LaTeX

Nu ben ik niet zo goed in programmeren maar dat moet wel te doen zijn zeker?

#13

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 24 januari 2007 - 16:50

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.

#14

evilbu

    evilbu


  • >250 berichten
  • 792 berichten
  • Ervaren gebruiker

Geplaatst op 24 januari 2007 - 16:53

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.

#15

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 24 januari 2007 - 16:58

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.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures