X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fedu%2Fberkeley%2Fqfat%2FMain.java;h=6818bbaad6a021b02eeb0f44da8199e4131882f5;hb=8322dacfd8a8fa0bc591012ee3a5f59775ce1334;hp=6a02d08e1680959921f4d2b266e306525a4ae095;hpb=57376a862c00fa1c8731f9989085fcfceeee0370;p=anneal.git diff --git a/src/edu/berkeley/qfat/Main.java b/src/edu/berkeley/qfat/Main.java index 6a02d08..6818bba 100644 --- a/src/edu/berkeley/qfat/Main.java +++ b/src/edu/berkeley/qfat/Main.java @@ -45,7 +45,7 @@ home: home view: take current angle, zoom to whole scnee public class Main extends MeshViewer { - public static int verts = 0; + public static int verts = 1; public static final Random random = new Random(); @@ -66,7 +66,7 @@ public class Main extends MeshViewer { goal.ignorecollision = true; // rotate to align major axis -- this probably needs to be done by a human. - goal.transform(new Matrix(new Vec(0, 0, 1), (float)(Math.PI/2))); + goal.transform(Matrix.rotate(new Vec(0, 0, 1), (float)(Math.PI/2))); float goal_width = goal.diagonal().dot(new Vec(1, 0, 0)); float goal_height = goal.diagonal().dot(new Vec(0, 1, 0)); @@ -88,25 +88,25 @@ public class Main extends MeshViewer { float halfup = 0; translations = new Matrix[] { - /* - new Matrix(new Vec(lshift, depth, halfup)), - new Matrix(new Vec(rshift, depth, halfup)), - new Matrix(new Vec(lshift, -depth, halfup)), - new Matrix(new Vec(rshift, -depth, halfup)), - */ - new Matrix(new Vec(0, depth, halfup)), - new Matrix(new Vec(0, -depth, halfup)), + Matrix.translate(new Vec(lshift, depth, halfup)), + Matrix.translate(new Vec(rshift, depth, halfup)), + Matrix.translate(new Vec(lshift, -depth, halfup)), + Matrix.translate(new Vec(rshift, -depth, halfup)), + /* + Matrix.translate(new Vec(0, depth, halfup)), + Matrix.translate(new Vec(0, -depth, halfup)), + */ - new Matrix(new Vec(lshift, 0, height)), - new Matrix(new Vec(rshift, 0, height)), - new Matrix(new Vec(lshift, 0, -height)), - new Matrix(new Vec(rshift, 0, -height)), + Matrix.translate(new Vec(lshift, 0, height)), + Matrix.translate(new Vec(rshift, 0, height)), + Matrix.translate(new Vec(lshift, 0, -height)), + Matrix.translate(new Vec(rshift, 0, -height)), - new Matrix(new Vec( width, 0, 0)), - new Matrix(new Vec(-width, 0, 0)), + Matrix.translate(new Vec( width, 0, 0)), + Matrix.translate(new Vec(-width, 0, 0)), }; @@ -239,14 +239,15 @@ public class Main extends MeshViewer { } } - //xMesh.Vert mid = lbf.getE(mbn).shatter(); + //xMesh.Vertex mid = lbf.getE(mbn).shatter(); // rescale to match volume float factor = (float)Math.pow(tile.volume() / goal.volume(), 1.0/3.0); - goal.transform(new Matrix(factor)); + goal.transform(Matrix.scale(factor)); // translate to match centroid - goal.transform(new Matrix(tile.centroid().minus(goal.centroid()))); + goal.transform(Matrix.translate(tile.centroid().minus(goal.centroid()))); + goal.makeVerticesImmutable(); //tx.e2.shatter(); //tx.e3.shatter(); @@ -265,25 +266,27 @@ public class Main extends MeshViewer { tile.score_against = goal; goal.score_against = tile; - tile.tilemesh = true; } public synchronized void breakit() { - if (verts > 800) return; - //while(verts < 800) { + int oldverts = verts; + System.out.println("doubling vertices."); PriorityQueue es = new PriorityQueue(); - for(Mesh.E e : tile.edges()) es.add(e); - for(int i=0; i<10; i++) { + for(Mesh.T t : tile) { + es.add(t.e1()); + es.add(t.e2()); + es.add(t.e3()); + } + for(int i=0; i