Autor Wątek: Szukanie punktów należących do koła  (Przeczytany 942 razy)

Offline wladcaN

  • Użytkownik

# Czerwiec 19, 2011, 20:35:48
Zawsze mam problem z wybraniem działu więc mam nadzieje że dobrze wybrałem :)

Chcę narysować na ekranie koło z losowym promieniem, znalazłem wzór na obliczenie tego (x-a)^2+(y-b)^2<=sr^2   a i b to współrzędne środka koła. No i napisałem taką funkcje:
void asdf()
{
int a=500;
int b=500;
int sr= rand()%200+10;

for(int X=a-sr;a==a+sr;X++)
{
for(int Y=b-sr;b==b+sr;Y++)
{
if((X-a)^2+(Y-b)^2<=sr^2) putPixel(ekran,X,Y,0,125,0);
}
}
}

Ale nie wiem czemu nic się na ekranie nie dzieje :( Od razu mówię że funkcja putPixel działa na 100%
« Ostatnia zmiana: Czerwiec 19, 2011, 20:41:58 wysłana przez wladcaN »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline albireo

  • Użytkownik

# Czerwiec 19, 2011, 20:47:41
^ to nie jest operator potęgowania, a bitowy xor, samego potęgowania nie ma w c(++) jako operator, musisz to przełożyć na mnożenie albo na funkcję pow (ale to będzie raczej wolniejsze).

Offline wladcaN

  • Użytkownik

# Czerwiec 19, 2011, 20:50:40
zmieniłem na:
if(((X-a)*(X-a))+((Y-b)*(Y-b))<=sr*sr) putPixel(ekran,X,Y,0,125,0);Ale dalej nie działa :/

Offline albireo

  • Użytkownik

# Czerwiec 19, 2011, 20:52:42
I jeszcze zmień:
Kod: (c) [Zaznacz]
for(int X=a-sr;a==a+sr;X++)na
Kod: (c) [Zaznacz]
for(int X=a-sr;X<=a+sr;X++)i analogicznie dla Y.

Offline wladcaN

  • Użytkownik

# Czerwiec 19, 2011, 20:56:25
Działa :D dziękuje! Parę razy zmieniałem nazwy wszystkich zmiennych i przeoczyłem to :P

Offline Avaj

  • Użytkownik

# Czerwiec 19, 2011, 21:07:39
tak się nie rysuje kół ;S

albo kombinuj z sin/cos, albo lepiej wygoogluj sobie bresenham circle algorithm

Offline wladcaN

  • Użytkownik

# Czerwiec 19, 2011, 21:43:52
Jak to nie? Jak dla mnie to to są koła :)


Offline Avaj

  • Użytkownik

# Czerwiec 19, 2011, 23:56:34
o tfu, myślałem, że okrąg chcesz, pomyliło mi się. :SS

Offline mINA87

  • Użytkownik

# Czerwiec 20, 2011, 11:35:34
Jak chcesz to zrobić z sensowną prędkością to tak czy tak powinieneś zaznajomić się z Bresenhamem.