rysowanie koła bezpośrednio w pamięci graficznnej

0

musze stworzyć okrągłe menu w tym problem ze nie zabardzo moge stworzyc koło :(
wymyśliłem algorytm ale to raczej przypomina okragły romb :D facet mi powiedziałze sa gotowe unkcje ( NIE GRAFICZNE!! TJ, BEZPOŚREDNI ZAPIS DO PAMIĘCI za pomoca mem $a000:0000)

0

dowolny algorytm rysowania okręgu (z definicji koła/okręgu, albo np. midpoint).

0

a możesz podac algorytm gotowy algorytm ??

0

!!tylko chciałem dodac ze pisze w pascalu nie w c

0

Spróbuj przetłumaczyć algorytm z C na pascal'a, masz przecież podany kod w linku, który podał Ci @Azarien:

void rasterCircle(int x0, int y0, int radius)
{
  int f = 1 - radius;
  int ddF_x = 1;
  int ddF_y = -2 * radius;
  int x = 0;
  int y = radius;
 
  setPixel(x0, y0 + radius);
  setPixel(x0, y0 - radius);
  setPixel(x0 + radius, y0);
  setPixel(x0 - radius, y0);
 
  while(x < y)
  {
    // ddF_x == 2 * x + 1;
    // ddF_y == -2 * y;
    // f == x*x + y*y - radius*radius + 2*x - y + 1;
    if(f >= 0) 
    {
      y--;
      ddF_y += 2;
      f += ddF_y;
    }
    x++;
    ddF_x += 2;
    f += ddF_x;    
    setPixel(x0 + x, y0 + y);
    setPixel(x0 - x, y0 + y);
    setPixel(x0 + x, y0 - y);
    setPixel(x0 - x, y0 - y);
    setPixel(x0 + y, y0 + x);
    setPixel(x0 - y, y0 + x);
    setPixel(x0 + y, y0 - x);
    setPixel(x0 - y, y0 - x);
  }
}
0

Procedure Circle (X1, Y1, R: Word; Kolor: Byte);
{ Rysuje okrag o srodku (X1,Y1) i promieniu R }
Var
kat: Real;
X,Y: Integer;
Begin
kat := 0; { Zaczynamy kat od 0 }
Repeat
X := round(RCOS (kat));
Y := round(R
SIN (kat));
putpixel_3 (x+x1,y+y1,Kolor);
kat := kat+0.005; { Dokladnosc - im mniejszy przyrost, }
{ tym dokladniejszy okrag. }
Until (kat>6.4); { az do 2*pi = okolo 6.4 }
End; { Circle }

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