1 /**** Program to Draw a Line using DDA Algorithm ****/
#include <stdio.h>
#include<iostream.h>
#include<conio.h>
#include <dos.h>
#include <graphics.h>
void lineDDA(int, int, int, int);
void main()
{
int x1, y1, xn, yn;
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
cout<<"Enter the starting coordinates of line: ";
cin>>x1>>y1;
cout<<"Enter the ending coordinates of line: ";
cin>>xn>>yn;
lineDDA(x1, y1, xn, yn);
getch();
}
void lineDDA(int x1, int y1, int xn, int yn)
{
int dx, dy, m, i;
m = (yn-y1)/(xn-x1);
for (i=x1; i<=xn; i++)
{
if (m <= 1)
{
dx = 1;
dy = m * dx;
}
else
{
dy = 1;
dx = dy / m;
}
x1 = x1 + dx;
y1 = y1 + dy;
putpixel(x1, y1, RED);
delay(20);
}
}
OUTPUT:
Enter the starting coordinates of line:100 100
Enter the ending coordinates of line:200 250
2 /*** Program to Draw a Line using Bresenham's Algorithm ***/
#include <stdio.h>
#include<conio.h>
#include<iostream.h>
#include <dos.h>
#include <graphics.h>
void lineBres(int, int, int, int);
void main()
{
int x1, y1, xn, yn;
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
cout<<"Enter starting coordinates of line: ";
cin>>x1>>y1;
cout<<"Enter ending coordinates of line: ";
cin>>xn>>yn;
lineBres(x1, y1, xn, yn);
getch();
}
void lineBres(int x1, int y1, int xn, int yn)
{
int dx = xn - x1, dy = yn - y1;
int di = 2 * dy - dx;
int ds = 2 * dy, dt = 2 * (dy - dx);
putpixel(x1, y1, RED);
while (x1 < xn)
{
x1++;
if (di < 0)
di = di + ds;
else
{
y1++;
di = di + dt;
}
putpixel(x1, y1, RED);
delay(20);
}
}
OUTPUT:
Enter starting coordinates of line:100 100
Enter ending coordinates of line:200 200
3 /*** Program to Draw a Circle using Bresenham's Algorithm ***/
#include <stdio.h>
#include<conio.h>
#include<iostream.h>
#include <dos.h>
#include <graphics.h>
void circleBres(int, int, int);
void drawCircle(int, int, int, int);
void main()
{
int xc, yc, r;
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
cout<<"Enter center coordinates of circle: ";
cin>>xc>>yc;
cout<<"Enter radius of circle: ";
cin>>r;
circleBres(xc, yc, r);
getch();
}
void circleBres(int xc, int yc, int r)
{
int x = 0, y = r;
int d = 3 - 2 * r;
while (x < y)
{
drawCircle(xc, yc, x, y);
x++;
if (d < 0)
d = d + 4 * x + 6;
else
{
y--;
d = d + 4 * (x - y) + 10;
}
drawCircle(xc, yc, x, y);
delay(50);
}
}
void drawCircle(int xc, int yc, int x, int y)
{
putpixel(xc+x, yc+y, RED);
putpixel(xc-x, yc+y, RED);
putpixel(xc+x, yc-y, RED);
putpixel(xc-x, yc-y, RED);
putpixel(xc+y, yc+x, RED);
putpixel(xc-y, yc+x, RED);
putpixel(xc+y, yc-x, RED);
putpixel(xc-y, yc-x, RED);
}
OUTPUT:
Enter center coordinates of circle:200 200
Enter radius of circle:50
4 /*** Program to Draw an Ellipse using Mid - Point Algorithm ***/
#include <stdio.h>
#include<conio.h>
#include<iostream.h>
#include <dos.h>
#include <graphics.h>
void ellipseMidpoint(float, float, float, float);
void drawEllipse(float, float, float, float);
void main()
{
float xc, yc, rx, ry;
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
cout<<"\nEnter the center coordinates of ellipse: ";
cin>>xc>>yc;
cout<<"\nEnter x-radius coordinate: ";
cin>>rx;
cout<<"\nEnter y-radius coordiante: ";
cin>>ry;
ellipseMidpoint(xc, yc, rx, ry);
getch();
}
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, RED);
putpixel(xc-x, yc+y, RED);
putpixel(xc+x, yc-y, RED);
putpixel(xc-x, yc-y, RED);
}
OUTPUT:
Enter the center coordinates of ellipse:100 100
Enter x-radius coordinate:50
Enter y-radius coordinate:100
5 /*** Program to Draw a Circle using Mid - Point Algorithm ***/
#include <stdio.h>
#include <dos.h>
#include<conio.h>
#include <graphics.h>
void circleMidpoint(int, int, int);
void drawCircle(int, int, int, int);
void main()
{
int xc, yc, r;
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
cout<<"Enter center coordinates of circle: ";
cin>>xc>>yc;
cout<<“Enter radius of circle: ";
cin>>r;
circleMidpoint(xc, yc, r);
getch();
}
void circleMidpoint(int xc, int yc, int r)
{
int x = 0, y = r;
int p = 1 - r;
while (x < y)
{
drawCircle(xc, yc, x, y);
x++;
if (p < 0)
p = p + 2 * x + 1;
else
{
y--;
p = p + 2 * (x - y) + 1;
}
drawCircle(xc, yc, x, y);
delay(50);
}
}
void drawCircle(int xc, int yc, int x, int y)
{
putpixel(xc+x, yc+y, RED);
putpixel(xc-x, yc+y, RED);
putpixel(xc+x, yc-y, RED);
putpixel(xc-x, yc-y, RED);
putpixel(xc+y, yc+x, RED);
putpixel(xc-y, yc+x, RED);
putpixel(xc+y, yc-x, RED);
putpixel(xc-y, yc-x, RED);
}
OUTPUT:
Enter center coordinates of circle:100 150
Enter radius of circle:50
6 /*. Program to implement Arbitary Rotation */
#include <graphics.h>
#include <math.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
class ArbitayRotation
{
private:
int a,x1,x2,y1,y2,d;
public:
void getline();
void getrotationfactor();
void rotate();
};
void ArbitayRotation::getline()
{
setcolor(RED);
cout<<"Enter starting point of line : ";
cin>>x1>>y1;
cout<<"Enter ending point of line : ";
cin>>x2>>y2;
line(x1,y1,x2,y2);
outtextxy(x2,y2,"Before");
}
void ArbitayRotation::getrotationfactor()
{
cout<<"\nEnter the angle with x axis : ";
cin>>a;
}
void ArbitayRotation::rotate()
{
setcolor(BROWN);
float x,y;
x=cos((3.142/180)*a);
//(3.142/180)*a compulsory to convert radians
y=sin((3.142/180)*a);
//into degrees.
float l;
l=sqrt(pow(100,2)+pow(0,2));
x=ceil(x*l);
y=ceil(y*l);
outtextxy(x1+x,y1-y-10,"After");
line(x1,y1,x1+x,y1-y);
}
void main()
{
ArbitayRotation r;
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc\\bgi");
r.getline();
r.getrotationfactor();
r.rotate();
getch();
closegraph();
}
Output:
Enter Starting point of Line: 50 50
Enter Ending point of Line: 100 100
Enter the angle with x axis: 30
7 /*.Program to generate characters A,B and C.*/
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<stdio.h>
void main()
{
int letter[3][9][7]=
{
{
{0,0,1,1,1,0,0},
{0,1,1,1,1,1,0},
{1,1,0,0,0,1,1},
{1,1,0,0,0,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,1},
{1,1,0,0,0,1,1},
{1,1,0,0,0,1,1},
{1,1,0,0,0,1,1}
},
{
{1,1,1,1,1,1,0},
{1,1,1,1,1,1,1},
{1,1,0,0,0,1,1},
{1,1,0,0,0,1,1},
{1,1,1,1,1,1,0},
{1,1,0,0,0,1,1},
{1,1,0,0,0,1,1},
{1,1,1,1,1,1,1},
{1,1,1,1,1,1,0}
},
{
{0,0,1,1,1,1,1},
{0,1,1,1,1,1,1},
{1,1,1,0,0,0,0},
{1,1,0,0,0,0,0},
{1,1,0,0,0,0,0},
{1,1,0,0,0,0,0},
{1,1,1,0,0,0,0},
{0,1,1,1,1,1,1},
{0,0,1,1,1,1,1}
}
};
int gd=DETECT,gm;
int i,j,k,y=10;
initgraph(&gd,&gm,"c:\\tc\\bgi");
for(k=0;k<3;k++)
{
for(i=0;i<9;i++)
{
for(j=0;j<7;j++)
{
if(letter[k][i][j]==1)
putpixel(j+y,i,GREEN);
}
}
//x+=20 then letters appear in backward diagonal
y+=10;
}
getch();
closegraph();
}
Output:
ABC
8 /* .Program to Draw curve*/
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
class Curve
{
float xo,yo,x1,y1,radius,angle;
public:
void getdata();
void drawcircle();
};
void Curve::getdata()
{
cout<<"Enter center coordinates of the curve : ";
cin>>xo>>yo;
cout<<"Enter radius of circle for the curve : ";
cin>>radius;
cout<<"Enter the angle of the curve : ";
cin>>angle;
}
void Curve::drawcircle()
{
for(int i = 0;i < angle;i++)
{
x1 = xo + (radius*cos(i*3.142/180));
y1 = yo + (radius*sin(i*3.142/180));
putpixel(x1,y1,4);
}
putpixel(xo,yo,4);
}
void main()
{
clrscr();
int gd=DETECT,gm;
initgraph(&gd,&gm,"C:\\tc\\bgi");
Curve c;
c.getdata();
c.drawcircle();
getch();
closegraph();
}
Output:
Enter center coordinates of the curve: 100 100
Enter radius of the circle for the curve: 50
Enter the angle of the curve: 50
9 /* .Program to Draw house */
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
class House
{
private:
int l1_x1,l1_y1,l1_x2,l1_y2;
int l2_x1,l2_y1,l2_x2,l2_y2;
int l3_x1,l3_y1,l3_x2,l3_y2;
int l4_x1,l4_y1,l4_x2,l4_y2;
int l5_x1,l5_y1,l5_x2,l5_y2;
public:
House();
void drawhouse();
};
House::House()
{
l1_x1=100;l1_y1=100;l1_x2=50;l1_y2=150;
l2_x1=50;l2_y1=150;l2_x2=50;l2_y2=250;
l3_x1=50;l3_y1=250;l3_x2=150;l3_y2=250;
l4_x1=150;l4_y1=250;l4_x2=150;l4_y2=150;
l5_x1=150;l5_y1=150;l5_x2=100;l5_y2=100;
}
void House::drawhouse()
{
line(l1_x1,l1_y1,l1_x2,l1_y2);
line(l2_x1,l2_y1,l2_x2,l2_y2);
line(l3_x1,l3_y1,l3_x2,l3_y2);
line(l4_x1,l4_y1,l4_x2,l4_y2);
line(l5_x1,l5_y1,l5_x2,l5_y2);
}
void main()
{
House d;
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc\\bgi");
d.drawhouse();
getch();
closegraph();
}
Output:
10 /* .Program to Fill polygon */
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
class Polygon
{
private:
int minx, miny, maxx, maxy;
public:
Polygon()
{
minx=100;
miny= 75;
maxx=150;
maxy=150;
}
void fillpoly(int, int);
void drawpoly();
};
void Polygon::drawpoly()
{
line(100,100,100,150);
line(100,150,150,150);
line(150,150,150,100);
line(150,100,125,75);
line(125,75,100,100);
int x,y;
cout<<"Enter point (x,y) inside house : ";
cin>>x>>y;
if(x<minx || x>maxx)
{
cout<<"Point outside";
}
else if(y<miny || y>maxy)
{
cout<<"Point outside";
}
else
{
fillpoly(x,y);
}
}
void Polygon::fillpoly(int x,int y)
{
if(getpixel(x,y)!= WHITE)
{
putpixel(x,y,WHITE);
fillpoly(x+1,y);
fillpoly(x-1,y);
fillpoly(x,y+1);
fillpoly(x,y-1);
}
}
void main()
{
clrscr();
int gd=DETECT,gm;
initgraph(&gd,&gm,"C:\\tc\\bgi");
class Polygon p;
p.drawpoly();
getch();
closegraph();
}
Output:
Enter point (x,y) inside house : 110 110