Professional Documents
Culture Documents
DDA
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main()
{
clrscr();
int gd=DETECT, gm=DETECT;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
float x1,x2,y1,y2;
float dx,dy,x=x1,y=y1,n;
int i;
dx=x2-x1;
dy=y2-y1;
if(abs(dx)>=abs(dy))
n=abs(dx);
else
n=abs(dy);
putpixel((int)x,(int)y,4);
//printf("(%d,%d)",int(x),int(y));
void main()
{
clrscr();
int gd=DETECT, gm=DETECT;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
int x1,x2,y1,y2;
int main()
{
clrscr();
int gd=DETECT, gm=DETECT;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
int xc,yc,r,x,y,p;
printf("Enter the center coordinates:");
scanf("%d%d",&xc,&yc);
printf("Enter the radius");
scanf("%d",&r);
drawaxis(xc,yc,r);
x=0;
y=r;
drawpoints(x,y,xc,yc);
p=1-r;
while(x<y)
{
if(p<0)
{
x=x+1;
y=y;
p=p+2*x+1;
}
else
{
x=x+1;
y=y-1;
p=p+2*(x-y)+1;
}
drawpoints(x,y,xc,yc);
getch();
}
getch();
closegraph();
}
4.Ellipse
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
#include<stdlib.h>
int main()
{
clrscr();
int gd=DETECT, gm=DETECT;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
long xc,yc,rx,ry,x,y;
dx=2*ry*ry*x;
dy=2*rx*rx*y;
//region1
while(dx<dy)
{
drawpoints(x,y,xc,yc);
if(p1<0)
{
x++;
dx=2*ry*ry*x;
//dx=dx+(2*ry*ry);
p1=p1+dx+(ry*ry);
}
else
{
x++;
y--;
dx=2*ry*ry*x;
dy=2*rx*rx*y;
//dx=dx+(2*ry*ry);
//dy=dy-(2*rx*rx);
p1=p1+dx-dy+(ry*ry);
}
}
//region2
//printf("\nregion2\n");
p2=((ry*ry)*((x+0.5)*(x+0.5)))+((rx*rx)*((y-1)*(y-1)))-(rx*rx*ry*ry);
while(y>=0)
{
drawpoints(x,y,xc,yc);
if(p2>0)
{
y--;
dy=2*rx*rx*y;
p2 = p2 + (rx * rx) - dy;
}
else
{
y--;
x++;
dx=2*ry*ry*x;
dy=2*rx*rx*y;
p2= p2 + dx - dy + (rx * rx);
}
}
getch();
getch();
closegraph();
return 0;
}
5. Rotation
#include<stdio.h>
#include <conio.h>
#include <math.h>
#include <graphics.h>
/* //comment no need to write
void printmatrix(int a[][3])
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");
}
void printmatrixf(float a[][3])
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
printf("%f ",a[i][j]);
}
printf("\n");
}
printf("\n");
}
*/
int main()
{
clrscr();
int gd=DETECT, gm=DETECT;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
int x1=400,y1=200;
int x2=400,y2=100;
int x3=300,y3=200;
float angle=40;
int o[3][3]= {x1,x2,x3,
y1,y2,y3,
1,1,1
}; //o for object,i for image
int main()
{
clrscr();
int gd=DETECT, gm=DETECT;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
printf("Scaling");
int x1=50,y1=50;
int x2=200,y2=50;
int x3=150,y3=200;
int o[3][3]= {x1,x2,x3,
y1,y2,y3,
1,1,1
}; //o for object,i for image
int sx=2,sy=2;
int arrObj[]= {x1,y1,x2,y2,x3,y3,x1,y1};
setfillstyle(SOLID_FILL,RED);
fillpoly(4,arrObj);
//line(x1,y1,x2,y2);
//line(x1,y1,x3,y3);
//line(x2,y2,x3,y3);
int scalingmatrix[3][3]= {sx,0,0,
0,sy,0,
0,0,1
};
scaling(o,scalingmatrix);
getch();
closegraph();
return 0;
}
7. Translation
#include<stdio.h>
#include <conio.h>
#include <math.h>
#include <graphics.h>
/*
void printmatrix(int a[][3])
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");
}
*/
void multiply(int x[][3],int y[][3],int z[][3])
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
z[i][j]=0;
for(int k=0;k<3;k++)
{
z[i][j]+=x[i][k]*y[k][j];
}
}
}
}
int main()
{
clrscr();
int gd=DETECT, gm=DETECT;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
int x1=125,y1=225;
int x2=200,y2=100;
int x3=200,y3=400;
int o[3][3]={x1,x2,x3,
y1,y2,y3,
1,1,1}; //o for object,i for image
int tx=200,ty=0;
int arrObj[]={x1,y1,x2,y2,x3,y3,x1,y1};
setfillstyle(SOLID_FILL,RED);
fillpoly(4,arrObj);
//line(x1,y1,x2,y2);
//line(x1,y1,x3,y3);
//line(x2,y2,x3,y3);
int translationmatrix[3][3]={1,0,tx,
0,1,ty,
0,0,1};
translation(o,translationmatrix);
getch();
closegraph();
return 0;
}
8. Reflection
#include<stdio.h>
#include <conio.h>
#include <math.h>
#include <graphics.h>
float midx,midy;
void drawAxis()
{
float maxx=getmaxx();
float maxy=getmaxy();
midx=maxx/2;
midy=maxy/2;
line(0,midy,maxx,midy);
line(midx,0,midx,maxy);
}
/*
void printmatrix(int a[][3])
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");
}
*/
void multiply(int x[][3],int y[][3],int z[][3])
{
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
z[i][j]=0;
for(int k=0; k<3; k++)
{
z[i][j]+=x[i][k]*y[k][j];
}
}
}
}
int main()
{
clrscr();
int gd=DETECT, gm=DETECT;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
printf("Reflection\n");
printf("red=object\n");
printf("blue=image reflected along horizontal axis\n");
printf("yellow=image reflected along vertical axis\n");
int x1=300,y1=150;
int x2=100,y2=200;
int x3=200,y3=100;
drawAxis();
int o[3][3]= {x1,x2,x3,
y1,y2,y3,
1,1,1
}; //o for object,i for image
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
int maxx,maxy,midx,midy;
void axis()
{
getch();
cleardevice();
line(midx,0,midx,maxy);
line(0,midy,maxx,midy);
}
void main()
{
int x,y,z,o,x1,x2,y1,y2;
setfillstyle(1,RED);
maxx=getmaxx();
maxy=getmaxy();
midx=maxx/2;
midy=maxy/2;
axis();
bar3d(midx+a,midy-b,midx+a+c,midy-(b-c),5,1);
printf("Enter rotating angle");
scanf("%d",&o);
x1=a*cos(o*3.14/180)-(a+c)*sin(o*3.14/180);
y1=a*sin(o*3.14/180)+(a+c)*cos(o*3.14/180);
x2=(a+c)*cos(o*3.14/180)-(b-c)*sin(o*3.14/180);
y2=(a+c)*sin(o*3.14/180)+(b-c)*cos(o*3.14/180);
//axis();
//axis();
printf("After rotation about yaxis=Green\n");
setfillstyle(5,GREEN);
bar3d(midx+x1,midy-b,midx+x2,midy-(b-c),5,1);
getch();
getch();
closegraph();
}
10.3D SCALING
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
int maxx,maxy,midx,midy;
void axis()
{
cleardevice();
line(midx,0,midx,maxy);
line(0,midy,maxx,midy);
}
void main()
{
int x,y,z,o,x1,x2,y1,y2;
axis();
bar3d(midx+a,midy-b,midx+a+c,midy-(b-c),5,1);
printf("Enter scaling factors");
scanf("%d%d%d", &x,&y,&z);
printf("After scaling");
setfillstyle(9,BLUE);
bar3d(midx+(x*a),midy-(y*b),midx+(x*(a+c)),midy-(y*(b-c)),5*z,1);
getch();
getch();
closegraph();
}
11. 3D Translation
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
int maxx,maxy,midx,midy;
void axis()
{
cleardevice();
line(midx,0,midx,maxy);
line(0,midy,maxx,midy);
}
void main()
{
int x,y,z,o,x1,x2,y1,y2;
int gd=DETECT, gm=DETECT;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
//co-ordinates
int a=50; //top left x
int b=50; //top left y
int c=20; //distance between bottom left and bottom right
setfillstyle(1,RED);
maxx=getmaxx();
maxy=getmaxy();
midx=maxx/2;
midy=maxy/2;
axis();
bar3d(midx+a,midy-b,midx+a+c,midy-(b-c),10,1);
void display()
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color to black and opaque
glClear(GL_COLOR_BUFFER_BIT); // Clear the color buffer (background)
glBegin(GL_LINES);
glColor3f(1, 0, 0);
glVertex3f(-0.75, 0,0 );
glColor3f(0, 1, 0);
glVertex3f(0.9, 0.9, 0);
//glColor3f(0, 0, 1); glVertex3f(0, 0.75, 0);
glEnd();
glFlush();
}
14. Square
void display()
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color to black and opaque
glClear(GL_COLOR_BUFFER_BIT); // Clear the color buffer (background)
glBegin(GL_QUADS); // Each set of 4 vertices form a quad
glColor3f(0.0f, 0.5f, 1.0f); // Red
glVertex2f(-0.5f, -0.5f); // x, y
glVertex2f( 0.5f, -0.5f);
glVertex2f( 0.5f, 0.5f);
glVertex2f(-0.5f, 0.5f);
glEnd();
glFlush(); // Flush drawing command buffer to make drawing happen as soon as possible.
}