[2d] Faliste, sinusoidalne koło...

0

Przydałoby mi się, ale nie mam pojęcia jak nakreślić taki sinusoidalny okrąg...

test:
user image

0

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 =]

0

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).

1 użytkowników online, w tym zalogowanych: 0, gości: 1