+
+ height = 4;
+ width = 4;
+ depth = 1;
+
+ Matrix mm = Matrix.scale(0.1f);
+ // top
+ quad(tile, mm,
+ new Point( 2, 2, 0),
+ new Point( 1, 1, -1),
+ new Point(-1, 1, -1),
+ new Point(-2, 2, 0));
+ quad(tile, mm,
+ new Point(-2, 2, 0),
+ new Point(-1, 1, 1),
+ new Point( 1, 1, 1),
+ new Point( 2, 2, 0));
+ quad(tile, mm,
+ new Point( 1, 1, -1),
+ new Point( 1, 1, 1),
+ new Point(-1, 1, 1),
+ new Point(-1, 1, -1));
+
+ // bottom
+ quad(tile, mm,
+ new Point(-2, -2, 0),
+ new Point(-1, -1, -1),
+ new Point( 1, -1, -1),
+ new Point( 2, -2, 0));
+ quad(tile, mm,
+ new Point( 2, -2, 0),
+ new Point( 1, -1, 1),
+ new Point(-1, -1, 1),
+ new Point(-2, -2, 0));
+ quad(tile, mm,
+ new Point(-1, -1, -1),
+ new Point(-1, -1, 1),
+ new Point( 1, -1, 1),
+ new Point( 1, -1, -1));
+
+ // left
+ quad(tile, mm,
+ new Point( 2, -2, 0),
+ new Point( 1, -1, -1),
+ new Point( 1, 1, -1),
+ new Point( 2, 2, 0));
+ quad(tile, mm,
+ new Point( 2, 2, 0),
+ new Point( 1, 1, 1),
+ new Point( 1, -1, 1),
+ new Point( 2, -2, 0));
+ quad(tile, mm,
+ new Point( 1, -1, -1),
+ new Point( 1, -1, 1),
+ new Point( 1, 1, 1),
+ new Point( 1, 1, -1));
+
+ // bottom
+ quad(tile, mm,
+ new Point(-2, 2, 0),
+ new Point(-1, 1, -1),
+ new Point(-1, -1, -1),
+ new Point(-2, -2, 0));
+ quad(tile, mm,
+ new Point(-2, -2, 0),
+ new Point(-1, -1, 1),
+ new Point(-1, 1, 1),
+ new Point(-2, 2, 0));
+ quad(tile, mm,
+ new Point(-1, 1, -1),
+ new Point(-1, 1, 1),
+ new Point(-1, -1, 1),
+ new Point(-1, -1, -1));
+
+
+
+ translations = new Matrix[] {
+
+ Matrix.translate(new Vec(0, 0.2f,0))
+ .times(Matrix.rotate(new Vec(0,1,0), (float)(1*Math.PI/2))),
+
+ Matrix.translate(new Vec(0,-0.2f,0))
+ .times(Matrix.rotate(new Vec(0,1,0), (float)(1*Math.PI/2))),
+
+ Matrix.translate(new Vec( 0.2f,0,0))
+ .times(Matrix.rotate(new Vec(1,0,0), (float)(-1*Math.PI/2))),
+
+ Matrix.translate(new Vec(-0.2f,0,0))
+ .times(Matrix.rotate(new Vec(1,0,0), (float)(-1*Math.PI/2))),
+
+
+ /*
+ Matrix.rotate(new Vec(0,0,1), (float)(1*Math.PI/2)),
+ Matrix.rotate(new Vec(0,0,1), (float)(2*Math.PI/2)),
+ Matrix.rotate(new Vec(0,0,1), (float)(3*Math.PI/2)),
+
+ Matrix.rotate(new Vec(1,0,0), (float)(2*Math.PI/2)),
+ */
+ //Matrix.rotate(new Vec(0,0,1), (float)(2*Math.PI/2)),
+ //Matrix.scale(1,-1,1),
+
+ //Matrix.translate(new Vec( 0.2f, 0,0))
+ //.times(Matrix.rotate(new Vec(0,0,1), (float)( 1*Math.PI/2)))
+ //.times(Matrix.rotate(new Vec(0,1,0), (float)( 3*Math.PI/2))),
+
+ //Matrix.translate(new Vec(-0.2f, 0,0))
+ //.times(Matrix.rotate(new Vec(0,0,1), (float)( 3*Math.PI/2)))
+ //.times(Matrix.rotate(new Vec(0,1,0), (float)( 3*Math.PI/2))),
+
+ //Matrix.rotate(new Vec(0,0,1), (float)( 0*Math.PI/2))
+ //.times(Matrix.translate(new Vec(0, -0.2f, 0)))
+ //.times(Matrix.rotate(new Vec(0,1,0), (float)( 1*Math.PI/2))),
+ //Matrix.rotate(new Vec(0,0,1), (float)( 1*Math.PI/2))
+ //.times(Matrix.translate(new Vec(0, -0.2f, 0)))
+ //.times(Matrix.rotate(new Vec(0,1,0), (float)( 1*Math.PI/2))),
+
+ //Matrix.rotate(new Vec(0,0,1), (float)( 0*Math.PI/2))
+ //.times(Matrix.translate(new Vec(0, -0.2f, 0)))
+ //.times(Matrix.rotate(new Vec(0,1,0), (float)( 1*Math.PI/2))),
+ //Matrix.rotate(new Vec(0,0,1), (float)( 0*Math.PI/2))
+ //.times(Matrix.translate(new Vec(0, -0.2f, 0)))
+ //.times(Matrix.rotate(new Vec(0,1,0), (float)( 1*Math.PI/2))),
+
+ Matrix.ONE,
+ };
+
+
+
+ for(Matrix m1 : translations) {
+ for(Matrix m2 : translations) {