Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 3.791 pregleda

Najnovija ↓

[Zadatak] Da li se uneta tacka nalazi unutar poligona 10.09.2008. u 18:02 · pre 220 meseci #1
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");
    }
}
Re: [Zadatak] Da li se uneta tacka nalazi unutar poligona 10.09.2008. u 19:55 · pre 220 meseci #4
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
Potpis
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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme