7 Feb 2013

C/C++ program for printing a pattern of an ellipse using bresenham algorithm and implementation of floodfill and setfillstyle


/* Program to Draw an Ellipse using Bresenham Algorithm  and implementation of floodfill and setfillstyle */
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include <graphics.h>
#include<dos.h>
//void ellipseMidpoint(float, float, float, float);
void drawEllipse(float, float, float, float);
void ellipseMidpoint(float xc, float yc, float rx, float ry)
{
float rxSq = rx * rx;
float rySq = ry * ry;
float x = 0, y = ry, p;
float px = 0, py = 2 * rxSq * y;
drawEllipse(xc, yc, x, y);
//Region 1
p = rySq - (rxSq * ry) + (0.25 * rxSq);
while (px < py)
{
x++;
px = px + 2 * rySq;
if (p < 0)
p = p + rySq + px;
else
{
y--;
py = py - 2 * rxSq;
p = p + rySq + px - py;
}
drawEllipse(xc, yc, x, y);
delay(30);
}
//Region 2
p = rySq*(x+0.5)*(x+0.5) + rxSq*(y-1)*(y-1) - rxSq*rySq;
while (y > 0)
{
y--;
py = py - 2 * rxSq;
if (p > 0)
p = p + rxSq - py;
else
{
x++;
px = px + 2 * rySq;
p = p + rxSq - py + px;
}
drawEllipse(xc, yc, x, y);
delay(30);
}
}
void drawEllipse(float xc, float yc, float x, float y)
{
putpixel(xc+x, yc+y, WHITE);
putpixel(xc-x, yc+y, WHITE);
putpixel(xc+x, yc-y, WHITE);
putpixel(xc-x, yc-y, WHITE);
}
void main()
{
float xc, yc, rx, ry;
int gd = DETECT, gm,i;
initgraph(&gd, &gm, "C:\\tc\\bgi");
ellipseMidpoint(200, 200, 60, 70);
ellipseMidpoint(300,300,60,70);
     
for(i=1;i<=10;i++)
{
setfillstyle(i,i+2);
floodfill(200,200,getmaxcolor());
delay(200);
setfillstyle(i,i+1);
floodfill(300,300,getmaxcolor());
delay(200);
}


setfillstyle(9,BLUE);
floodfill(1,1,getmaxcolor());

getch();
}

OUTPUT


No comments:

Post a Comment