# Draw a Ellipse : Mid-Point Algorithm

Levels of difficulty: / perform operation:

### C Program

```#include<graphics.h>
#include<conio.h>
#include<stdio.h>
void plotpoints(int cx, int cy, int x, int y) {
putpixel(cx + x, cy + y, 4);
putpixel(cx - x, cy + y, 4);
putpixel(cx + x, cy - y, 4);
putpixel(cx - x, cy - y, 4);
}
void main() {
int cx, cy, rx, ry;
printf("Enter the center ");
scanf("%d%d", &cx, &cy);
scanf("%d", &rx);
scanf("%d", &ry);
long rx2 = (long) rx * rx;
long ry2 = (long) ry * ry;
long trx2 = 2 * rx2;
long try2 = 2 * ry2;
long p, x = 0, y = ry;
long px = 0;
long py = trx2 * y;
p = (long) ((ry2 - (rx2 * ry) + (0.25 * rx2)) + 0.5);
int gd = DETECT, gm = DETECT;
initgraph(&gd, &gm, "");
cleardevice();
putpixel(cx, cy, 15);
while (px < py) {
plotpoints(cx, cy, x, y);
x++;
px += try2;
if (p < 0)
p += ry2 + px; else {
y--;
py -= trx2;
p += ry2 + px - py;
}
}
py = trx2 * y;
px = try2 * x;
p = (long) ((ry2 * (x + 0.5) * (x + 0.5) + rx2 * (y - 1) * (y - 1) - rx2 * ry2) + 0.5);
while (y >= 0) {
plotpoints(cx, cy, x, y);
y--;
py -= trx2;
if (p > 0)
p += rx2 - py; else {
x++;
px += try2;
p += rx2 - py + px;
}
}
getch();
}
```

`About Me`