Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 14

/*<applet code=trand height=1000 width=1000></applet>*/

import java.awt.*;
import java.applet.*;
import java.lang.*;
import javax.swing.*;
public class trand extends Applet
{
float ch,sx,sy,tx,ty,tz,sz,x,h,cy;
float tmpe;
float[][] r;
float[][] a=new float[4][8];
float[][] b=new float[4][4];
float[][] c=new float[4][8];
float[][] m=new float[4][4];
float[][] re=new float[4][4];
int[][] c1=new int[4][8];
int[][] a1=new int[4][8];
public void identity(float[][] m)
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i==j)
m[i][j]=1;

}
}
}
public void premultiply(float[][] b,float[][] c)
{
int r,e;
float[][] tmp=new float[4][4];
for(r=0;r<4;r++)
{
for(e=0;e<4;e++)
{
tmp[r][e]=b[r][0]*c[0][e]+b[r][1]*c[1][e]+b[r][2]*c[2][e]+b[r][3]*c[3][e];
}}

for(r=0;r<4;r++)
{
for(e=0;e<4;e++)
{
c[r][e]=tmp[r][e];
}
}
}

public void translate(float tx,float ty,float tz)


{
float[][] ma=new float[4][4];

identity(ma);
ma[0][3]=tx;
ma[1][3]=ty;
ma[2][3]=tz;

premultiply(ma,re);
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
System.out.println(re[i][j]);
}
}
}
public void scale(float sx,float sy,float sz)
{
float[][] ma=new float[4][4];
identity(ma);
ma[0][0]=sx;
ma[0][3]=(1-sx)*100;
ma[1][1]=sy;
ma[1][3]=(1-sy)*100;
ma[2][2]=sz;
ma[2][3]=(1-sz)*100;
premultiply(ma,re);
}

public void rotate(float x)


{
float[][] ma=new float[4][4];
identity(ma);
double temp=x*4.14/180;
translate(-100,-100,-100);
ma[0][0]=1;
ma[0][1]=0;
ma[0][2]=0;
ma[0][3]=0;
ma[1][0]=0;
ma[1][1]=(float)Math.cos(temp);
ma[1][2]=(float)-Math.sin(temp);
ma[1][3]=0;
ma[2][0]=0;
ma[2][1]=(float)Math.sin(temp);
ma[2][3]=ma[3][0]=ma[3][1]=ma[3][2]=0;
ma[2][2]=(float)Math.cos(temp);
ma[3][3]=1;
premultiply(ma,re);
System.out.println("re");
translate(100,100,100);
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{

System.out.println(re[i][j]);
}
}

}
public void rotatey(float x)
{
float[][] ma=new float[4][4];
identity(ma);
double temp=x*4.14/180;
translate(-100,-100,-100);
ma[0][0]=(float)Math.cos(temp);
ma[0][1]=0;
ma[0][2]=(float)Math.sin(temp);
ma[0][3]=0;
ma[1][0]=0;
ma[1][1]=1;
ma[1][2]=0;
ma[1][3]=0;
ma[2][0]=(float)-Math.sin(temp);
ma[2][1]=0;
ma[2][3]=ma[3][0]=ma[3][1]=ma[3][2]=0;
ma[2][2]=(float)Math.cos(temp);
ma[3][3]=1;
premultiply(ma,re);
System.out.println("re");

translate(100,100,100);
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
System.out.println(re[i][j]);
}
}

}
public void rotatez(float x)
{
float[][] ma=new float[4][4];
identity(ma);
double temp=x*4.14/180;
translate(-100,-100,-100);
ma[0][0]=(float)Math.cos(temp);
ma[0][1]=(float)-Math.sin(temp);
ma[0][2]=0;
ma[0][3]=0;
ma[1][0]=(float)Math.sin(temp);
ma[1][1]=(float)Math.cos(temp);
ma[1][2]=0;
ma[1][3]=0;
ma[2][0]=0;
ma[2][1]=0;

ma[2][3]=ma[3][0]=ma[3][1]=ma[3][2]=0;
ma[2][2]=1;
ma[3][3]=1;
premultiply(ma,re);
System.out.println("re");
translate(100,100,100);
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
System.out.println(re[i][j]);
}
}

public void init()


{
identity(re);
ch=Integer.parseInt(JOptionPane.showInputDialog("Enter the
choice:1.Translation 2.Scaling 3.Rotation\n"));
if(ch==1)
{
tx=Integer.parseInt(JOptionPane.showInputDialog("Enter the translation
factor x:"));

ty=Integer.parseInt(JOptionPane.showInputDialog("Enter the translation


factor y:"));
tz=Integer.parseInt(JOptionPane.showInputDialog("Enter the translation
factor z:"));

translate(tx,ty,tz);
}
else if(ch==2)
{
sx=Integer.parseInt(JOptionPane.showInputDialog("Enter the scaling
factor x:"));
sy=Integer.parseInt(JOptionPane.showInputDialog("Enter the scaling
factor y:"));
sz=Integer.parseInt(JOptionPane.showInputDialog("Enter the scaling
factor z:"));
scale(sx,sy,sz);
}
else if(ch==3)
{

cy=Integer.parseInt(JOptionPane.showInputDialog("Enter the
choice:Rotate about 1.x axis 2.y axis 3.z axis\n"));
if(cy==1)
{
x=Integer.parseInt(JOptionPane.showInputDialog("Enter angle of
rotation"));
rotate(x);
}
else if(cy==2)

x=Integer.parseInt(JOptionPane.showInputDialog("Enter angle of
rotation"));
rotatey(x);
}
else

if(cy==3)
{
x=Integer.parseInt(JOptionPane.showInputDialog("Enter angle of

rotation"));
rotatez(x);
}
}

a[0][0]=100;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point x1:"));
a[1][0]=100;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point y1:"));
a[0][1]=200;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point x2:"));
a[1][1]=100;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point y2"));
a[0][2]=100;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point x4:"));
a[1][2]=200;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point y4:"));
a[0][3]=200;

a[1][3]=200;
a[2][3]=100;
a[2][0]=100;
a[2][1]=100;
a[2][2]=100;

a[0][6]=100;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point x1:"));
a[1][6]=100;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point y1:"));
a[0][7]=200;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point x2:"));
a[1][7]=100;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point y2"));
a[0][4]=100;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point x4:"));
a[1][4]=200;
//Integer.parseInt(JOptionPane.showInputDialog("Enter Point y4:"));
a[0][5]=200;
a[1][5]=200;

a[2][5]=200;
a[2][6]=200;
a[2][7]=200;
a[2][4]=200;

a[3][0]=a[3][1]=a[3][2]=a[3][3]=a[3][4]=a[3][5]=a[3][6]=a[3][7]=1;
}
public void paint(Graphics g)
{
double temp=63.4*3.14/180;

double temp1=45*3.14/180;
for(int j=0;j<8;j++)
{

a[0][j]=a[0][j]+a[2][j]*(float)
((1/Math.tan(temp))*Math.cos(temp1));
a[1][j]=a[1][j]+a[2][j]*(float)
((1/Math.tan(temp))*Math.sin(temp1));
System.out.println(a[0][j]+ " "+a[1][j]);
}

for(int i=0;i<4;i++)
{
for(int j=0;j<8;j++)
{
a1[i][j]=(int)a[i][j];
System.out.println(a1[i][j]);

}
}

g.drawLine(a1[0][0],a1[1][0],a1[0][1],a1[1][1]);
g.drawLine(a1[0][0],a1[1][0],a1[0][2],a1[1][2]);
g.drawLine(a1[0][2],a1[1][2],a1[0][3],a1[1][3]);
g.drawLine(a1[0][3],a1[1][3],a1[0][1],a1[1][1]);

g.drawLine(a1[0][6],a1[1][6],a1[0][7],a1[1][7]);
g.drawLine(a1[0][6],a1[1][6],a1[0][4],a1[1][4]);
g.drawLine(a1[0][4],a1[1][4],a1[0][5],a1[1][5]);
g.drawLine(a1[0][7],a1[1][7],a1[0][5],a1[1][5]);

g.drawLine(a1[0][0],a1[1][0],a1[0][6],a1[1][6]);
g.drawLine(a1[0][1],a1[1][1],a1[0][7],a1[1][7]);
g.drawLine(a1[0][2],a1[1][2],a1[0][4],a1[1][4]);
g.drawLine(a1[0][3],a1[1][3],a1[0][5],a1[1][5]);

g.setColor(Color.red);

System.out.println("c[i][j]");
for(int i=0;i<4;i++)
{
for(int j=0;j<8;j++)

{
c[i][j]=0;
for(int k=0;k<4;k++)
{
c[i][j]=c[i][j]+re[i][k]*a[k][j];
System.out.println(re[i][k]);
System.out.println(a[k][j]);
System.out.println("ans"+c[i][j]);
}
c[0][j]=c[0][j]+a[3][j]*(float)
(1/Math.tan(temp)*Math.cos(temp));
c[1][j]=c[1][j]+a[3][j]*(float)
(1/Math.tan(temp)*Math.sin(temp));
}
}
//transform(a);
for(int i=0;i<4;i++)
{
for(int j=0;j<8;j++)
{
System.out.println(c[i][j]);
}
}
for(int i=0;i<4;i++)
{
for(int j=0;j<8;j++)
{

c1[i][j]=(int)c[i][j];

}}

g.drawLine(c1[0][0],c1[1][0],c1[0][1],c1[1][1]);
g.drawLine(c1[0][0],c1[1][0],c1[0][2],c1[1][2]);
g.drawLine(c1[0][2],c1[1][2],c1[0][3],c1[1][3]);
g.drawLine(c1[0][3],c1[1][3],c1[0][1],c1[1][1]);
g.setColor(Color.red);
g.drawLine(c1[0][6],c1[1][6],c1[0][7],c1[1][7]);
g.drawLine(c1[0][6],c1[1][6],c1[0][4],c1[1][4]);
g.drawLine(c1[0][4],c1[1][4],c1[0][5],c1[1][5]);
g.drawLine(c1[0][7],c1[1][7],c1[0][5],c1[1][5]);

g.drawLine(c1[0][0],c1[1][0],c1[0][6],c1[1][6]);
g.drawLine(c1[0][1],c1[1][1],c1[0][7],c1[1][7]);
g.drawLine(c1[0][2],c1[1][2],c1[0][4],c1[1][4]);
g.drawLine(c1[0][3],c1[1][3],c1[0][5],c1[1][5]);

}
}

You might also like