> Online tutorial

3d transformation program in c




3D Transformation

#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 gd,gm,x,y,z,o,x1,x2,y1,y2;
detectgraph(&gd,&gm);
initgraph(&gd,&gm,"e:\tc\bgi");

setfillstyle(0,getmaxcolor());
maxx=getmaxx();
maxy=getmaxy();
midx=maxx/2;
midy=maxy/2;

axis();

bar3d(midx+50,midy-100,midx+60,midy-90,5,1);

printf("Enter translation factor <BR>);
scanf("%d%d",&x,&y);
axis();
printf("After translation:<BR>);
bar3d(midx+x+50,midy-(y+100),midx+x+60,midy-(y+90),5,1);

axis();
bar3d(midx+50,midy-100,midx+60,midy-90,5,1);
printf("Enter scaling factors<BR>);
scanf("%d%d%d", &x,&y,&z);

axis();
printf("After scaling<BR>);
bar3d(midx+(x*50),midy-(y*100),midx+(x*60),midy-(y*90),5*z,1);
axis();


bar3d(midx+50,midy-100,midx+60,midy-90,5,1);

printf("Enter rotating angle<BR> );
scanf("%d",&o);
 x1=50*cos(o*3.14/180)-100*sin(o*3.14/180);
 y1=50*sin(o*3.14/180)+100*cos(o*3.14/180);
 x2=60*cos(o*3.14/180)-90*sin(o*3.14/180);
 y2=60*sin(o*3.14/180)+90*cos(o*3.14/180);

axis();
printf("After rotation about z axis<BR> );
bar3d(midx+x1,midy-y1,midx+x2,midy-y2,5,1);
axis();

printf("After rotation  about x axis <BR>);
bar3d(midx+50,midy-x1,midx+60,midy-x2,5,1);

axis();
printf("After rotation about yaxis<BR>);
bar3d(midx+x1,midy-100,midx+x2,midy-90,5,1);
getch();
closegraph();
}

BRESENHAM’S CIRCLE ALGORITHM


PROGRAM:

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
int x,y,p;
void plotcircle(int xc,int yc,int color)
{
putpixel(xc+x,yc+y,color);
putpixel(xc+y,yc+x,color);
putpixel(xc+x,yc-y,color);
putpixel(xc+y,yc-x,color);
putpixel(xc-x,yc-y,color);
putpixel(xc-y,yc-x,color);
putpixel(xc-x,yc+y,color);
putpixel(xc-y,yc+x,color);
}
void bicircle(int xcen,int ycen,int rad,int color)
{
x=0;
y=rad;
plotcircle(xcen,ycen,color);
p=1-rad;
while(x<y)
{
if(p<0)
++x;
else
{
++x;
--y;
}
if(p<0)
p+=2*x+1;
else
{
p+=2*(x-y)+1;
plotcircle(xcen,ycen,color);
}
}
}
void main()
{
int gd=DETECT,gm,xc,yc,radius,color;
initgraph(&gd,&gm,"");
printf("\nEnter x pos,y pos and radius");
scanf ("%d%d%d",&xc,&yc,&radius);
x=0;
y=radius;
plotcircle(xc,yc,color);
p=1-radius;
while(x<y)
{
if(p<0)
++x;
else
{
++x;
--y;
}
if(p<0)
p+=2*x+1;
else
{
p+=2*(x-y)+1;
plotcircle(xc,yc,color);
}
}
getch();
bicircle(xc,yc,radius,color);
}

BRESENHAM’S LINE ALGORITHM



PROGRAM

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<math.h>
#include<graphics.h>
#include<stdlib.h>
void main()
{
            int gd=DETECT,gm,x0,y0,x1,y1,p,dx,dy,i,x2,y2,ec;
            ec=graphresult();
            if(ec!=grOk)
            {
                        cout<<"Graphics error:%s\n",grapherrormsg(ec);
                        cout<<"press any key to halt";
                        getch();
                        exit(1);
            }
            initgraph(&gd,&gm,"");
            cout<<"enter left end pt";
            cin>>x0>>y0;
            cout<<"Enter right end pts";
            cin>>x1>>y1;
            cleardevice();
            dx=abs(x1-x0);
            dy=(y1-y0);
            if(dx<dy)
            {
                        y2=dx;
                        dx=dy;
                        dy=y2;
                        x2=x0;
                        y2=y0;
            }
            else
            {
                        x2=y0;
                        y2=x0;
            }
            p=2*dx*dy;
            putpixel(x2,y2,RED);
            for(i=0;i<=x0;i++)

            {
                        if(p<0)
                        {
                                    y2=y2+1;
                                    p=p+2*dy;
                        }
                        else
                        {
                                    x1++;
                                    p=p+2*dy-2*dx;
                        }
                        putpixel(x1,y1,RED);
            }
            setbkcolor(GREEN);
            getch();
            return;
}
Output:
Enter the left and right end points:
0 0
10 10

output primitives program


PROGRAM:

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<string.h>
void main()
{
char ch='y';
int gd=DETECT,gm,x1,y1,x2,y2,rad,sa,ea,xrad,yrad,i;
initgraph(&gd,&gm,"");
while(ch=='y')
{
cleardevice();
setbkcolor(9);
outtextxy(100,150,"Enter 1 to get line");
outtextxy(100,170,"2.Circle");
outtextxy(100,190,"3.Box");
outtextxy(100,210,"4.Arc");
outtextxy(100,230,"5.Ellipse");
outtextxy(100,250,"6.Rectangle");
outtextxy(100,270,"7.Exit");
ch=getch();
cleardevice();
switch(ch)
{
case '1':
line(100,200,300,400);
break;
case '2':
circle(200,200,100);
break;
case '3':
setfillstyle(5,4);
bar(100,300,200,100);
break;
case '4':
setfillstyle(5,4);
arc(200,200,100,300,100);
break;
case '5':
setfillstyle(5,4);
fillellipse(100,100,50,100);
break;
case '6':
settextstyle(DEFAULT_FONT,0,2);
outtextxy(120,140,"VEL TECH");
line(100,100,100,300);
line(300,300,100,300);
line(100,100,300,100);
line(300,100,300,300);
break;
case '7':
closegraph();
return;
}
ch='y';
getch();
}
}

Output:




square number using calculator


PRINT THE SQUARE NUMBER


#include<studio.h>
#include<conio.h>
void main()
{
int i;
clrscr();
i=1;
while(i<=100)
{
i++;
printf("\n%d",i*i);
}
getch();
}

OUTPUT


Enter the no: 2