/*CSEMATTER.BLOGSPOT.IN
PROGRAM-REFLECTION IN GRAPHICS*/
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
void display(float [3][3]);
void xreflection(float [3][3],float [3][3]);
void yreflection(float [3][3],float [3][3]);
void linereflection(float [3][3],float [3][3]);
void multiply(float [3][3],float [3][3],float [3][3]);
void multiply1(float [3][3],float [3][3],float [3][3],float [3][3],float [3][3],float [3][3],float [3][3]);
int main()
{
int gd=DETECT,gm,i,j,k,choice;
float arr2[3][3],arr[3][3],arr_c[3][3];
initgraph(&gd,&gm,"C:\TC\bgi");
printf("Enter the values of x & y coordinates for 1st, 2nd, 3rd vertex");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
if(j==0)
scanf("%f",&arr2[i][0]);
if(j==1)
scanf("%f",&arr2[i][1]);
else if(j==2)
arr2[i][2]=1;
}
}
display(arr2);
printf("enter the choice\n");
printf("enter the 1 for x-reflection\n");
printf("enter the 2 for y-reflection\n");
printf("enter the 3 for y=mx+c reflection \n");
scanf("%d",&choice);
switch(choice)
{
case 1:
xreflection(arr2,arr);
display(arr);
getch();
closegraph();
break;
case 2:
yreflection(arr2,arr);
display(arr);
getch();
closegraph();
break;
case 3:
linereflection(arr2,arr_c);
display(arr_c);
getch();
closegraph();
break;
}
}
void display(float arr2[3][3])
{
line(320+arr2[0][0],240-arr2[0][1],320+arr2[1][0],240-arr2[1][1]);
line(320+arr2[1][0],240-arr2[1][1],320+arr2[2][0],240-arr2[2][1]);
line(320+arr2[2][0],240-arr2[2][1],320+arr2[0][0],240-arr2[0][1]);
}
void xreflection(float arr2[3][3],float arr[3][3])
{
int i,j;
float arr3[3][3];
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
if(i!=j)
arr3[i][j]=0;
}
}
arr3[0][0]=1;
arr3[1][1]=-1;
arr3[2][2]=1;
multiply(arr3,arr2,arr);
}
void yreflection(float arr2[3][3],float arr[3][3])
{
int i,j;
float arr3[3][3];
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
if(i!=j)
arr3[i][j]=0;
}
}
arr3[0][0]=-1;
arr3[1][1]=1;
arr3[2][2]=1;
multiply(arr3,arr2,arr);
}
void linereflection(float arr2[3][3],float arr_c[3][3])
{
int i,j,k;
float m,c,arr_t[3][3],arr_r[3][3],arr_it[3][3],arr_ir[3][3],arr_ref[3][3];
float theta1;
printf("enter the values of m & c");
scanf("%f %f",&m,&c);
theta1=atan(m);
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
if(i==j)
arr_t[i][j]=1;
else
arr_t[i][j]=0;
arr_t[2][0]=0;
arr_t[2][1]=-c;
}
}
arr_r[0][0]=cos(theta1);
arr_r[0][1]=-sin(theta1);
arr_r[0][2]=0;
arr_r[1][0]=sin(theta1);
arr_r[1][1]=cos(theta1);
arr_r[1][2]=0;
arr_r[2][0]=0;
arr_r[2][1]=0;
arr_r[2][2]=1;
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
if(i!=j)
arr_ref[i][j]=0;
}
}
arr_ref[0][0]=1;
arr_ref[1][1]=-1;
arr_ref[2][2]=1;
arr_ir[0][0]=cos(theta1);
arr_ir[0][1]=sin(theta1);
arr_ir[0][2]=0;
arr_ir[1][0]=-sin(theta1);
arr_ir[1][1]=cos(theta1);
arr_ir[1][2]=0;
arr_ir[2][0]=0;
arr_ir[2][1]=0;
arr_ir[2][2]=1;
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
if(i==j)
arr_it[i][j]=1;
else
arr_it[i][j]=0;
arr_it[2][0]=0;
arr_it[2][1]=c;
}
}
multiply1(arr2, arr_t, arr_r, arr_ref, arr_ir, arr_it, arr_c);
}
void multiply(float arr3[3][3],float arr2[3][3],float arr[3][3])
{
int i,j,k;
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
arr[i][j]=0.0;
}
}
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
for(k=0; k<3; k++)
{
arr[i][j]=arr[i][j]+arr2[i][k]*arr3[k][j];
}
}
}
}
void multiply1(float arr2[3][3],float arr_t[3][3],float arr_r[3][3],float arr_ref[3][3],float arr_ir[3][3],float arr_it[3][3],float arr_c[3][3])
{
int i,j,k;
float arr_a[3][3],arr_b[3][3],arr_d[3][3],arr_e[3][3];
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
arr_a[i][j]=0;
arr_b[i][j]=0;
arr_d[i][j]=0;
arr_e[i][j]=0;
arr_c[i][j]=0;
}
}
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
for(k=0; k<3; k++)
{
arr_a[i][j]=arr_a[i][j]+(arr2[i][k]*arr_t[k][j]);
arr_b[i][j]=arr_b[i][j]+(arr_r[i][k]*arr_ref[k][j]);
arr_d[i][j]=arr_d[i][j]+(arr_ir[i][k]*arr_it[k][j]);
}
}
}
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
for(k=0; k<3; k++)
{
arr_e[i][j]=arr_e[i][j]+(arr_a[i][k]*arr_b[k][j]);
}
}
}
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
for(k=0; k<3; k++)
{
arr_c[i][j]=arr_c[i][j]+(arr_e[i][k]*arr_d[k][j]);
}
}
}
}
No comments:
Post a Comment