import java.awt.*; public class house1 extends BufferedApplet { int x = 0, y = 0; int w = 0, h = 0; Color drawingColor = Color.black; int house[][] = { { 0, 100}, { 0, 0}, {100, 0}, { 50, -50}, { 0, 0}, {100, 100}, {100, 0}, { 0, 100}, {100, 100}, }; Matrix3x3 m = new Matrix3x3(); double vec1[] = new double[2]; double vec2[] = new double[2]; public void render(Graphics g) { if (w == 0) { w = bounds().width; h = bounds().height; x = w / 2; y = h / 2; } g.setColor(Color.white); g.fillRect(0, 0, w, h); // YOUR TRANSFORMATION LOGIC GOES HERE m.identity(); m.translate(x, y); drawHouse(g); m.translate(x, 0); drawHouse(g); } void drawHouse(Graphics g) { g.setColor(drawingColor); for (int i = 0 ; i < house.length - 1 ; i++) { m.transform(house[i ][0], house[i ][1], vec1); m.transform(house[i+1][0], house[i+1][1], vec2); g.drawLine((int)vec1[0], (int)vec1[1], (int)vec2[0], (int)vec2[1]); } } public boolean mouseMove(Event e, int x, int y) { return false; } public boolean mouseDown(Event e, int x, int y) { return false; } public boolean mouseDrag(Event e, int x, int y) { this.x = x; this.y = y; damage = true; return true; } public boolean mouseUp(Event e, int x, int y) { return false; } public boolean keyDown(Event e, int key) { return false; } public boolean keyUp(Event e, int key) { switch (key) { case 'r': drawingColor = Color.red; break; case 'g': drawingColor = Color.green; break; case 'b': drawingColor = Color.blue; break; case ' ': drawingColor = Color.black; break; } damage = true; return true; } }