#include #include int root(int c) { int r; for (r=0; r*r < c ; r++) ; return r; } void PaintPoint(Point centre,int h, int v) { int y = centre.v + v; int x = centre.h + h; printf("Point : %d %d\n",h,v); DrawLine(x,y,x,y); y = centre.v + v; x = centre.h - h; DrawLine(x,y,x,y); y = centre.v - v; x = centre.h - h; DrawLine(x,y,x,y); y = centre.v - v; x = centre.h + h; DrawLine(x,y,x,y); } void cercle(Point centre, int rr) { int h,v; int delta = 0; int r = root(rr); v=r; h=0; do { PaintPoint(centre,h,v); delta += 2*h+1; h++; if (delta <= 0) continue; delta += -2*v+1; v--; if (delta <= 0) continue; h--; delta -= 2*h-1; } while (v >= 0); } void main(void) { Point p,q; int r,old; InitQuickDraw(); for (;;) { WaitClickDown(); GetMouse(&p); PenMode(patXor); PenPat(gray); do { GetMouse(&q); old = r = (p.h-q.h)*(p.h-q.h)+(p.v-q.v)*(p.v-q.v); cercle(p,r); printf("r = %d\n",root(r)); do { GetMouse(&q); r = (p.h-q.h)*(p.h-q.h)+(p.v-q.v)*(p.v-q.v); } while ((old == r) && Button()); cercle(p,old); } while (Button()); PenMode(patCopy); PenPat(black); cercle(p,r); } }