Przydałoby mi się, ale nie mam pojęcia jak nakreślić taki sinusoidalny okrąg...
test:
Przydałoby mi się, ale nie mam pojęcia jak nakreślić taki sinusoidalny okrąg...
test:
sinus cosinus daj boże trzy minus?
n=0, wyznaczyć punkt środka koła, kąt ustawić na zero
powtarzać aż kąt >360
wyznaczasz punkt z punktu środka z przesunięciem r+n w danym kierunku, rysujesz pixla w tym punkcie, do n dodajesz jakąś wartość , jeżeli N>max lub N<min wtedy zmieniasz znak wartości kroku ( mnożysz razy -1 ), do kąta dodajesz inną wartość
to tak brutalnie =]
To najbardziej klasyczny (i przy okazji najwolniejszy) sposób generowania okręgu:
void circle(graphics g, int x0, int y0, int r)
{
int x, y;
int oldx = (int)(r * sin(0)), oldy = (int)(r * cos(0)); //r * (0, 1)
for(int a = 1; a <= 90; a++)
{
x = (int)(r * sin(a));
y = (int)(r * cos(a));
g.drawLine(x0 + oldx, y0 + oldy, x0 + x, y0 + y);
g.drawLine(x0 - oldx, y0 + oldy, x0 - x, y0 + y);
g.drawLine(x0 + oldx, y0 - oldy, x0 + x, y0 - y);
g.drawLine(x0 - oldx, y0 - oldy, x0 - x, y0 - y);
oldx = x;
oldy = y;
}
}
Piszę z głowy, ale powinno być dobrze. Ponieważ ziarnistość odpowiada stopniom kątowym więc nie tyle jest to okrąg ile 360-kąt (będzie widoczne dla dużych r).