//
// Draw a simple house import java.awt.*; public class hw2 extends BufferedApplet { int X[] = new int[4]; int Y[] = new int[4]; int Ax[][][] = new int[2][100][4]; int Ay[][][] = new int[2][100][4]; int Cx[][] = new int[75][4]; int Cy[][] = new int[75][4]; int col[] = new int[75]; double points[][][] = { {{-1,0,0},{0,1,0},{1,0,0},{0,-1,0},{-1,0,0}}, {{-2,0,0},{0,2,0},{2,0,0},{0,-2,0},{-2,0,0}} }; double a[] = {0,0,0}, b[] = {0,0,0}; double c[] = {0,0,0}, d[] = {0,0,0}; int w, h, count = 0; int colr, colg,colb,currcol = 255; double t = 0; long time0; double elapsed; Matrix3D scaler = new Matrix3D(); Matrix3D turn = new Matrix3D(); public void init() { super.init(); scaler.scaleMatrix(0.1,0.1,1); turn.zRotationMatrix(1); scaler.rotateZ(2); } public void render(Graphics g) { if (w == 0) { w = bounds().width; h = bounds().height; g.setColor(Color.white); g.fillRect(0,0,w,h); time0 = System.currentTimeMillis(); } g.setColor(Color.white); g.fillRect(0,0,w,h); long time = System.currentTimeMillis(); elapsed = (time - time0) / 1000.0; g.setColor(Color.black); animate(); col[count %75] = colb; for (int i = 0 ; i < points.length ; i++) for (int j = 1 ; j < points[i].length ; j++) { turn.transform(points[i][j-1], a); turn.transform(points[i][j ], b); Ax[i][count % 100][j-1]=x(a[0]); Ay[i][count%100][j-1]=y(a[1]); //g.drawLine(x(a[0]), y(a[1]), x(b[0]), y(b[1])); if (i==1){ scaler.transform(points[i][j-1], c); Cx[count %75][j-1] = x(c[0]); Cy[count %75][j-1] = y(c[1]); // X[j-1] = x(c[0]); // Y[j-1] = y(c[1]); } } if (count < 100) for (int k = 0 ; k < count ; k++) for (int i=0 ; i < 2; i++) for (int j=0 ; j<4; j++){ g.drawLine(Ax[i][k][j], Ay[i][k][j], Ax[i][k][(j+1)%4], Ay[i][k][(j+1)%4]); } else for (int k = count ; k < count + 100 ; k++) for (int i=0 ; i < 2; i++) for (int j=0 ; j<4; j++) g.drawLine(Ax[i][k%100][j], Ay[i][k%100][j], Ax[i][k%100][(j+1)%4], Ay[i][k%100][(j+1)%4]); if (count < 75) for (int k = 0 ; k < count ; k++){ currcol = col[k]; g.setColor(new Color(currcol,currcol,currcol)); g.fillPolygon(Cx[k],Cy[k],4); } else for (int k = count ; k