home *** CD-ROM | disk | FTP | other *** search
- { programme de tracage de cercle utilisant algorythme de michelob
- cette algorythme a l'avantage d'etre incremental , et utilise
- que des entiers d'ailleur aucune difference avec la procedure
- circle du pascal comme le montre ce programme
- }
-
- program test;
- uses crt,graph;
- const xp1=50;
- xp2=100;
- xp3=10;
- yp1=10;
- yp2=30;
- yp3=150;
- cstlgdr=500;
-
- type coord= RECORD
- x : integer;
- y : integer;
- END;
- droite= RECORD
- d: array[1..cstlgdr] of integer;
- l: word;
- END;
- var a:char;
- d1,d2,d3 : droite;
- point: array[1..3] of coord;
- s: integer;
- procedure trace(x1,y1,x2,y2:integer;c:byte);
- BEGIN
- putpixel(x1,y1,c);
- {line(x1,y1,x2,y2);}
- END;
-
-
- procedure arccercle(rayon:integer);
- var critere : integer;
- x,y: integer;
- BEGIN
- x:=0;
- y:=rayon;
- critere:=3-2*rayon;
- while x<=y do
- BEGIN
- if x<>y then BEGIN
- putpixel(x+200,200-y,4);
- putpixel(200-y,200-x,4);
- putpixel(200-x,200+y,4);
- putpixel(200+y,200+x,4);
- END;
- if x<>0 then
- BEGIN
- putpixel(x+200,200+y,4);
- putpixel(200+y,200-x,4);
- putpixel(200-x,200-y,4);
- putpixel(200-y,200+x,4);
- END;
- if critere<0 then
- critere:=critere+4*x+6
- else
- BEGIN
- critere:=critere+4*(x-y)+10;dec(y);
- END;
- inc(x);
- END;
- END;
-
-
- PROCEDURE graphisme ;
- VAR
- GraphDriver , GraphMode ,CodeErreur : integer ;
- BEGIN
- GraphDriver := Detect ;
- InitGraph (GraphDriver,GraphMode,'c:\t7\bgi\') ;
- clearviewport;
- CodeErreur := GraphResult ;
- If CodeErreur <> GrOk Then
- Begin
- Writeln ('Erreur en mode graphique : ',GraphErrorMsg (GraphDriver));
- Readln ;
- Halt (1) ;
- End ;
- END ;
- BEGIN
- a:=' ';
- s:=0;
- graphisme;
- clearviewport;
- randomize;
- setcolor(0);
- repeat
- arccercle(s);
- circle(200,200,s);
- inc(s);
- until s=200;
- repeat
- until keypressed;
- a:=readkey;
- end.
-