Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Da li se uneta tacka nalazi unutar poligona

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Da li se uneta tacka nalazi unutar poligona

[ Pregleda: 2789 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

stefic_kg
Kragujevac

Član broj: 119791
Poruke: 71
79.101.176.*



+2 Profil

icon [Zadatak] Da li se uneta tacka nalazi unutar poligona10.09.2008. u 17:02 - pre 190 meseci
Trebaa da ucitam koliko tacaka ima poligon, pa da ucitam kordinate za svaku tacku.
Sada treba da se ispita da li se neka proizvoljno uneta tacka (mi unosimo kordinate tacke) nalazi unutar poligona ili ne!

Evo primera koji je uradjen preko uglova uglova, tj ako je tacka unutar poligona ugao je 360 (tako sto se ispitivana tacka spaja sa svim kordinatama poligona) , a ako je van poligona, onda je naravno ukupan ugao manji od 360.

Ali ovaj primer ne radi dobro, pa ako neko vidi gresku, bio bih zahvalan da pokaze gde i zasto!
Unapred hvala.


Code:


#include <stdio.h>

void main()
{
    int xc,yc,x,y;
    int i=0;
    double cosA[10];
    double ugao=0;
    int broj_cvorova;
    int kordinata[2][10];
    printf("upisi koliko cvorova ima poligon: ");
    scanf("%d",&broj_cvorova);
    while(i<broj_cvorova)
    {
        printf("upisi x kordinatu %d. cvora: ",i+1);
        scanf("%d",&xc);
        printf("upisi y kordinatu %d. cvora: ",i+1);
        scanf("%d",&yc);
        i++;
    }
    for(i=0;i<broj_cvorova;i++)
    {
        kordinata[0][i]=xc;        kordinata[1][i]=yc;
        i++;
    }
    printf("Unesi kordinate cvora koji ispitujete x pa y: ");
    scanf("%d",&x);
    scanf("%d",&y);
    for(i=0;i<broj_cvorova;i++)
    {
        cosA[i]=((kordinata[0][i]*kordinata[0][i+1]+kordinata[1][i]*kordinata[1][i+1])/(((kordinata[0][i]*kordinata[0][i])+sqrt(kordinata[1][i]*kordinata[1][i]))*sqrt((kordinata[0][i+1])+(kordinata[1][i+1]))));
        if(i+1==broj_cvorova)
        {
                    cosA[i]=((kordinata[0][i]*kordinata[0][0]+kordinata[1][i]*kordinata[1][0])/(((kordinata[0][i]*kordinata[0][i])+sqrt(kordinata[1][i]*kordinata[1][i]))*sqrt((kordinata[0][0])+(kordinata[1][0]))));

        }
        for(i=0;i<broj_cvorova;i++)
        {
            ugao+=cosA[i];
        }
        if(ugao==360)
            printf("\nTacka se nalazi u poligonu.\n");
        if(ugao<360)
            printf("\nTacka nije u poligonu.\n");
    }
}
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: [Zadatak] Da li se uneta tacka nalazi unutar poligona10.09.2008. u 18:40 - pre 190 meseci
(10.09.2008. - 20:40) Tema je premeštena iz foruma C programiranje u forum C za početnike.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: [Zadatak] Da li se uneta tacka nalazi unutar poligona10.09.2008. u 18:45 - pre 190 meseci
Pogledaj prvo ovde:
http://en.wikipedia.org/wiki/Point_in_polygon

Zatim pogledaj linkove na dnu te strane (External links), sigurno ces naci nekoliko rutina koje rade.
 
Odgovor na temu

StefanJer91
Stefan Jeremic
Beograd

Član broj: 121923
Poruke: 160
*.static.ikomline.net.



Profil

icon Re: [Zadatak] Da li se uneta tacka nalazi unutar poligona10.09.2008. u 18:55 - pre 190 meseci
Nisam gledao kod ali pretopostavljam da su problemi kod izdubljenih poligona. Pogledaj ovaj article http://www.gamasutra.com/view/...rashing_into_the_new_year_.php
The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Da li se uneta tacka nalazi unutar poligona

[ Pregleda: 2789 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.