# include <stdio.h>
# include <graphics.h>
# include <conio.h>
# include <math.h>
#include<stdlib.h>
int ch;
int i,j,k,angle;
void x_axis( int [5][3], int);
void y_axis( int [5][3], int);
void z_axis( int [5][3], int);
void mult( int[5][3],float[4][4],float[5][3]);
float y[4][4],x[4][4],z[4][4];
void draw(int [5][3]);
int s[5][3]={
{40,130,50}, // The co-ordinates
{120,130,50}, // to make a
{160,90,-50}, // pyramid
{70,90,-50},
{80,20,0}
};
float matrix_a;
float matrix_b;
float c[4][3];
void main( )
{
int driver=DETECT,mode;
initgraph(&driver,&mode,"");
draw(s);
printf("\n1.X_axis,2.Y_axis,3.Z_axis");
printf("\nEnter ur choice:");
scanf("%d",&ch);
printf("Enter the angle:");
scanf("%d",&angle);
cleardevice();
switch(ch)
{
case 1:
x_axis(s,angle);
break;
case 2:
y_axis(s,angle);
break;
case 3:
z_axis(s,angle);
break;
default:
exit(0);
}
getch();
}
void x_axis( int p[5][3], int theta)
{
float angle=(theta*(3.14/180));
for(i=0;i<4;i++)
for(j=0;j<4;j++)
x[i][j]=0;
//Matrix Initialization
x[1][1]=cos(angle);x[1][2]=-sin(angle);
x[2][1]=sin(angle);x[2][2]=cos(angle);
x[0][0]=1;
mult(p,x,c);
for(i=0;i<5;i++)
for(j=0;j<3;j++)
p[i][j]=(int)(c[i][j]+0.5);
draw(p);
}
void y_axis( int p[5][3], int theta)
{
float angle=(theta*(3.14/180));
for(i=0;i<4;i++)
for(j=0;j<4;j++)
y[i][j]=0;
y[0][0]=cos(angle);y[0][1]=-sin(angle);
y[2][0]=sin(angle);y[2][1]=cos(angle);
y[1][1]=1;
mult(p,y,c);
for(i=0;i<5;i++)
for(j=0;j<3;j++)
p[i][j]=(int)(c[i][j]+0.5);
draw(p);
}
void z_axis( int p[5][3], int theta)
{
float angle=(theta*(3.14/180));
for(i=0;i<4;i++)
for(j=0;j<4;j++)
z[i][j]=0;
z[0][0]=cos(angle);z[0][1]=-sin(angle);
z[1][0]=sin(angle);z[1][1]=cos(angle);
z[2][2]=1;
mult(p,z,c);
for(i=0;i<5;i++)
for(j=0;j<3;j++)
p[i][j]=(int)(c[i][j]+0.5);
draw(p);
}
void mult( int matrix_1[5][3],float matrix_2[4][4],float matrix_3[5][3])
{
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
for( k=0;k<3;k++)
matrix_3[i][j]+=(matrix_1[i][k]*matrix_2[k][j]);
}
}
void draw(int points[5][3])
{
int a[5][3];
for(i=0;i<5;i++)
{
a[i][0]=points[i][0];
a[i][1]=points[i][1];
a[i][2]=points[i][2];
a[i][1]+=240;
a[i][0]+=240;
}
line(a[0][0],a[0][1],a[1][0],a[1][1]);
line(a[1][0],a[1][1],a[2][0],a[2][1]);
line(a[2][0],a[2][1],a[3][0],a[3][1]);
line(a[3][0],a[3][1],a[0][0],a[0][1]);
line(a[0][0],a[0][1],a[4][0],a[4][1]);
line(a[1][0],a[1][1],a[4][0],a[4][1]);
line(a[2][0],a[2][1],a[4][0],a[4][1]);
line(a[3][0],a[3][1],a[4][0],a[4][1]);
}