De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Recursie: het cirkel algoritme van Bresenham

Verwante presentaties


Presentatie over: "Recursie: het cirkel algoritme van Bresenham"— Transcript van de presentatie:

1 Recursie: het cirkel algoritme van Bresenham
Cirkels tekenen op een monitor… Onmogelijk vanwege het discrete karakter van monitoren. Derhalve: genoegen nemen met een benadering.

2 De cirkel: een definitie
Een cirkel = een verzameling punten die allemaal op een gegeven afstand r liggen van een centraal punt. r y x

3 De cirkel: eigenschappen
De relatie tussen een punt op de rand en het centrum: Pythagoras r

4 Een cirkel tekenen… Loop over de x- as en bereken de bijbehorende y- coördinaat op basis van de straal:

5 Een cirkel tekenen… Problemen:
De cirkel wordt niet mooi gesloten getekend… Ieder punt kost nogal wat rekenkracht. Gebroken getallen zijn niet zo netjes en leiden mogelijk tot afrondingsfouten.

6 Een cirkel tekenen… Een andere methode: poolcoördinaten. r

7 Een cirkel tekenen… Poolcoördinaten: problemen:
Hoekberekening vormt een gebroken getal. Gebruik van goniometrische functies…

8 Goniometrie in een computer
Goniometrische functies volgens Taylor:

9 Een cirkel tekenen: Bresenham
Een cirkel is symmetrisch… Teken 1/8 deel van de cirkel en construeer de rest volgens herhaald spiegelen.

10 Een cirkel tekenen: Bresenham
Definieer een cirkelfunctie: Punt (x,y) op cirkel met straal r? functiewaarde=0 Punt (x,y) binnen de cirkel?  functiewaarde <0 Punt (x,y) buiten de cirkel?  functiewaarde >0

11 Bresenham: recursie… 2 mogelijkheden voor het volgende pixel…
evaluatiepunt

12 Bresenham: recursie… Hebben we getekend: Dan wordt de volgende: OF

13 Bresenham: recursie… Evalueer de cirkelfunctie op het evaluatiepunt teneinde de y- coördinaat van de opvolger te kunnen berekenen:

14 Bresenham: recursie… Evaluatiepunt binnen cirkel? Teken:
Evaluatiepunt buiten cirkel? Teken:

15 Bresenham: recursie… Evalueer cirkelfunctie voor “de opvolger van de opvolger”:

16 Bresenham: recursie… Ofwel:

17 Bresenham: recursie  code
int circlemid(int xc,int yc,int r) { int x=0,y=r; axis(); putpixel(convertxc(xc),convertyc(yc),5); plotpoint(xc,yc,x,y); double p=1-r; while(x<y) { if(p<0) { x=x+1; p=p+2*x+1; } else{ y=y-1; p=p+2*(x-y)+1;} return(0);


Download ppt "Recursie: het cirkel algoritme van Bresenham"

Verwante presentaties


Ads door Google