3D Scaling
header files
void main()
{
float u[10],x[10],xx[10],q,len,sx,sy,sz,z[10][10],c[10][10],m[10][10],y[10];
int i,n,k,j,ch,p;
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver,&gmode,"c:tc ");
setbkcolor(15);
setcolor(5);
printf("Enter the co ordinates");
i=0;
k=8;
while(i< k)
{
scanf("%f%f",&x[i],&x[i+1]);
i=i+2;
}
i=0;
while(i< k-2)
{
line(x[i],x[i+1],x[i+2],x[i+3]);
i=i+2;
}
line(x[i],x[i+1],x[0],x[1]);
printf(" length\n");
scanf("%f",&len);
printf("angle");
scanf("%f",&q);
i=0;
while(i< k)
{
xx[i]=x[i]+len*cos(q);
xx[i+1]=x[i+1]+len*sin(q);
line(x[i],x[i+1],xx[i],xx[i+1]);
i=i+2;
}
i=0;
while(i< k-2)
{
line(xx[i],xx[i+1],xx[i+2],xx[i+3]);
i=i+2;
}
line(xx[i],xx[i+1],xx[0],xx[1]);
printf(" vector");
scanf("%f%f%f",&sx,&sy,&sz);
u[1]=sx;
u[2]=sy;
u[3]=sz;
u[4]=1;
//assigning values for matrix m[][]
for(i=1;i< =4;i++)
for(j=1;j< =4;j++)
if(i==j)
m[i][j]=u[j];
else
m[i][j]=0;
//assigning values for c[][]
p=0;
for(i=1;i< =4;i++)
for(j=1;j< =4;j++)
if(j==1j==2)
{
c[i][j]=x[p];
p++;
}
else
c[i][j]=1;
//matrix multiplication
for(i=1;i< =4;i++)
{
for(j=1;j< =4;j++)
{
z[i][j]=0;
for(k=1;k< =4;k++)
{
z[i][j]=z[i][j]+c[i][k]*m[k][j];
}
}
}
//drawing the rectangle
for(i=1;i< 4;i++)
line(z[i][1],z[i][2],z[i+1][1],z[i+1][2]);
line(z[4][1],z[4][2],z[1][1],z[1][2]);
//draw the z axis
for(i=1;i< =4;i++)
{
x[i]=z[i][1]+len*cos(q);
y[i]=z[i][2]+len*sin(q);
line(z[i][1],z[i][2],x[i],y[i]);
}
for(i=1;i< 4;i++)
line(x[i],y[i],x[i+1],y[i+1]);
line(x[1],y[1],x[4],y[4]);
getch();
}
Google Ads
Monday, May 18, 2009
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment