home *** CD-ROM | disk | FTP | other *** search
- /*
- SG C Tools 1.5
-
- (C) 1993 Steve Goldsmith
- All Rights Reserved
-
- Compiled with HI-TECH C 3.09 (CP/M-80).
- */
-
- #include <hitech.h>
- #include <vdc.h>
-
- /* draw ellipse in 640 X 480 interlace */
-
- void ellipseivdc(int XC, int YC, int A, int B)
- {
- int X, Y;
- long AA, AA2, BB, BB2, D, DX, DY;
-
- X = 0;
- Y = B;
- AA = (long) A*A;
- AA2 = AA << 1;
- BB = (long) B*B;
- BB2 = BB << 1;
- D = BB-AA*B+AA >> 2;
- DX = 0;
- DY = AA2*B;
- setpixivdc(XC,YC-Y);
- setpixivdc(XC,YC+Y);
- while (DX < DY)
- {
- if (D > 0)
- {
- Y--;
- DY -= AA2;
- D -= DY;
- }
- X++;
- DX += BB2;
- D += (BB+DX);
- setpixivdc(XC+X,YC+Y);
- setpixivdc(XC-X,YC+Y);
- setpixivdc(XC+X,YC-Y);
- setpixivdc(XC-X,YC-Y);
- }
- D += (3*(AA-BB)/2-(DX+DY))/2;
- while (Y > 0)
- {
- if (D < 0)
- {
- X++;
- DX += BB2;
- D += (BB+DX);
- }
- Y--;
- DY -= AA2;
- D += (AA-DY);
- setpixivdc(XC+X,YC+Y);
- setpixivdc(XC-X,YC+Y);
- setpixivdc(XC+X,YC-Y);
- setpixivdc(XC-X,YC-Y);
- }
- }
-