Avatar billede thomas_nj Nybegynder
29. december 2005 - 22:38 Der er 5 kommentarer og
1 løsning

Algoritme til at tegne en cirkel

Hej eksperter

  Hvis vi nu siger at jeg har funktionen cirkel(), der ud fra en radius, samt et centrum skal tegne en cirkel. Som hjælp har den funktionen fp(), der farver pixel (x,y).
  Cirklen skal være fyldt ud og y og y koordinaterne vil altid være positive.

  dvs at cirkel(8,8,7); skal tegne en cirkel med centrum i 8,8 og en radius på 7. fp(2,2) farver funktet 2,2

  Er der en, der kender til en eller anden smart algortime?
Avatar billede gamling Nybegynder
29. december 2005 - 22:59 #1
dette vil virke

void cirkel(int cx, int cy, int r){
for(int x=-r;x<r;x++)
for(int y=-r;y<r;y++)
  if(x*x+y*y<=r*r) fp(x+cx,y+cy);
}
Avatar billede arne_v Ekspert
29. december 2005 - 23:04 #2
farv(centerx + cos(v)*radius, centery + sin(v)*radius)

hvor v løber fra 0 til 2*pi med et passende lille interval

måske
Avatar billede gamling Nybegynder
29. december 2005 - 23:13 #3
"Cirklen skal være fyldt ud" går jeg ud fra betyder at den skal farves "solid". Hvis ikke dette er tilfældet, er arne_v's bud helt klart det bedste...

imo vil man helst undgå funktioner som sin og cos... ligsom sqrt hvilket også er hvorfor jeg bruger r*r istedet for sqrt(x*x+y*y)<=r

Man vil også løbe ind i at intervallet på vinklen man ændrer er variabel ifht cirklens størrelse, dette kan selvfølgelig løses også.
Avatar billede arne_v Ekspert
29. december 2005 - 23:20 #4
jeg overså den med fyldt ud
Avatar billede gamling Nybegynder
29. december 2005 - 23:23 #5
fair :)
Avatar billede thomas_nj Nybegynder
29. december 2005 - 23:48 #6
Den skulle lige rettes lidt til, men bruger gamlings princip. Mange tak for det hurtige svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester