TITLE: Write C++/Java program to draw line using DDA and Bresenham‘s algorithm. Inherit pixel class and Use function overloading.
TITLE: Write C++/Java program to draw line using DDA and Bresenham‘s algorithm. Inherit pixel class and Use function overloading.
#include<iostream>
#include<math.h>
#include<graphics.h>
using namespace std;
class pixel_entry
{
public:
int x1,y1,x2,y2;
void accept()
{
cout<<"\n Enter the x1 coordinates: ";
cin>>x1;
cout<<"\n Enter the y
1 coordinates: ";
cin>>y1;
cout<<"\n Enter the x2 coordinates: ";
cin>>x2;
cout<<"\n Enter the y2 coordinates: ";
cin>>y2;
}
int plotpixel(int x, int y)
{
putpixel(int(x),int(y),WHITE);
}
};
class DDA:public pixel_entry
{
public:
int i,length;
float x,y,dx,ix,iy,dy;
int sign(int z)
{
if(z>1)
return 1;
else
return -1;
}
int line(int x1,int y1,int x2,int y2)
{
dx=abs(x2-x1);
dy=abs(y2-y1);
if(dx>dy)
{
length=dx;
}
else
{
length=dy;
}
ix=(dx/length);
iy=(dy/length);
x=x1+0.5*sign(x2-x1);
y=y1+0.5*sign(y2-y1);
for(i=0;i<=length;i++)
{
plotpixel(x,y);
x=x+ix;
y=y+iy;
}
}
};
class Bresenhms:public pixel_entry
{
int dx,dy,i,length,x,y,s1,s2,e,temp,exc;
public:
int sign(int z)
{
if(z>1)
return 1;
else
return -1;
}
int line(int x1,int y1,int x2,int y2)
{
dx=abs(x2-x1);
dy=abs(y2-y1);
x=x1;
y=y1;
plotpixel(x,y);
s1=sign(x2-x1);
s2=sign(y2-y1);
if(dy>dx)
{
temp=dy;
dy=dx;
dx=temp;
exc=1;
}
else
{
exc=0;
}
e=((2*dy)-dx);
i=1;
while(i<dx)
{
while(e>=0)
{
if(exc=1)
{
x=x+s1;
}
else
{
y=y+s2;
}
e=e-2*dx;
}
if(exc=1)
{
y=y+s2;
}
else
{
x=x+s1;
}
e=e+2*dy;
plotpixel(x,y);
i++;
}
}
};
int main()
{
int ch,gm,gd=DETECT;
char ans;
DDA D;
Bresenhms B;
cout<<"\n********************MENU**************************";
cout<<"\n1.DDA Line Drawing Algorithm...";
cout<<"\n2.Bresenhams Line Drawing Algorithm...";
cout<<"\n3.Exit...";
do
{
cout<<"\nEnter the choice: ";
cin>>ch;
switch(ch)
{
case 1: D.accept();
initgraph(&gd,&gm,NULL);
D.line(D.x1,D.y1,D.x2,D.y2);
delay(100000);
closegraph();
break;
case 2: B.accept();
initgraph(&gd,&gm,NULL);
B.line(B.x1,B.y1,B.x2,B.y2);
delay(100000);
closegraph();
break;
}
}while(ch!=3);
delay(10000);
closegraph();
return 0;
}
OUTPUT:
No comments:
Post a Comment