algoritm: inne eller ute ?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1531
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

algoritm: inne eller ute ?

Inlägg av persika »

Hur avgör man i ett program om en punkt ligger innanför eller utanför en oregelbunden månghörning ? Hur är algoritmen för det ?

Bild
Senast redigerad av persika 17 maj 2008, 06:53:21, redigerad totalt 1 gång.
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Du rör dig ut mot bildens kant och räknar efter hur många gånger du korsar en polygonkant. Udda antal korsningar = innanför, jämnt = utanför.

Edit:
http://freespace.virgin.net/hugo.elias/ ... _polyd.htm

Kolla under "Does a point lie within a polygon?"
SvenW
Inlägg: 1155
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg av SvenW »

Ett tänkbart sätt, som inte nödvändigtvis är det bästa, är att gå runt månghörningen och för varje segment se om punkten ligger till höger eller vänster om segmentet, och sedan ta ett majoritetsbeslut.
För höger/vänster beslut kan man ta vektorprodukten för respektive segment.
Jag har sådana basfunktioner i Hec.
http://w1.318.comhem.se/~u31829222/index.html

Välj senaste version. Titta i utils1.c, specifikt vector_product_length ();

PS. Här finns även funktioner för att se om man korsar ett segment, som behövs i metoden ovan (RasmusB's inlägg)
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1531
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

Intressanta svar!

Ang. första svaret: Om man betraktar månghörningen som ett antal linjer och och en linje mellan punkten och nånstans utanför, så ska man då räkna antal skärningar som "punktlinjen" har med de övriga. Lite jobbigt specialfall när linjen skär precis innifrån ett hörn.

Ang. andra svaret: Gjorde några skisser med papper o penna med olika månghörningar, fick inte alltid rätt svar.
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Inlägg av JonasJ »

Titta även här http://www.faqs.org/faqs/graphics/algorithms-faq/ under punkt 2.03.

Det som RasmusB skrev är vad jag vet en ganska standardlösning för detta problem.
Skriv svar