X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2FMain.java;h=bb5dd1136801efb0db91efd80826b082868b3146;hb=97861fe55db813365768e4ab2d53f2f5908c1486;hp=f0671584f6ddd2a1d653bf5be3a3b639cfd31c7b;hpb=e9681998186aae90379775e798e49d85d203b28e;p=anneal.git diff --git a/src/edu/berkeley/qfat/Main.java b/src/edu/berkeley/qfat/Main.java index f067158..bb5dd11 100644 --- a/src/edu/berkeley/qfat/Main.java +++ b/src/edu/berkeley/qfat/Main.java @@ -12,6 +12,8 @@ import edu.berkeley.qfat.geom.Point; public class Main extends MeshViewer { + public static int verts = 0; + public static final Random random = new Random(); /** magnification factor */ @@ -127,23 +129,23 @@ public class Main extends MeshViewer { if ((t1.v1().p.times(m).minus(t2.v1().p).mag() < Mesh.EPSILON) && (t1.v2().p.times(m).minus(t2.v3().p).mag() < Mesh.EPSILON) && (t1.v3().p.times(m).minus(t2.v2().p).mag() < Mesh.EPSILON)) { - t1.e1().bind(t2.e3().pair); - t1.e2().bind(t2.e2().pair); - t1.e3().bind(t2.e1().pair); + t1.e1().bindEdge(t2.e3()); + t1.e2().bindEdge(t2.e2()); + t1.e3().bindEdge(t2.e1()); } if ((t1.v2().p.times(m).minus(t2.v1().p).mag() < Mesh.EPSILON) && (t1.v3().p.times(m).minus(t2.v3().p).mag() < Mesh.EPSILON) && (t1.v1().p.times(m).minus(t2.v2().p).mag() < Mesh.EPSILON)) { - t1.e2().bind(t2.e3().pair); - t1.e3().bind(t2.e2().pair); - t1.e1().bind(t2.e1().pair); + t1.e2().bindEdge(t2.e3()); + t1.e3().bindEdge(t2.e2()); + t1.e1().bindEdge(t2.e1()); } if ((t1.v3().p.times(m).minus(t2.v1().p).mag() < Mesh.EPSILON) && (t1.v1().p.times(m).minus(t2.v3().p).mag() < Mesh.EPSILON) && (t1.v2().p.times(m).minus(t2.v2().p).mag() < Mesh.EPSILON)) { - t1.e3().bind(t2.e3().pair); - t1.e1().bind(t2.e2().pair); - t1.e2().bind(t2.e1().pair); + t1.e3().bindEdge(t2.e3()); + t1.e1().bindEdge(t2.e2()); + t1.e2().bindEdge(t2.e1()); } } } @@ -178,13 +180,13 @@ public class Main extends MeshViewer { } public synchronized void breakit() { - if (verts > 50) return; + if (verts > 300) return; PriorityQueue es = new PriorityQueue(); for(Mesh.E e : tile.edges()) es.add(e); for(int i=0; i<10; i++) { Mesh.E e = es.poll(); verts++; - System.out.println("shatter " + e); + //System.out.println("shatter " + e); e.shatter(); tile.rebindPoints(); } @@ -193,7 +195,7 @@ public class Main extends MeshViewer { public synchronized void rand(double temperature, Mesh.Vert p) { double tile_score = tile.score(); double goal_score = goal.score(); - p.rescore(); + p.reComputeError(); Vec v = new Vec((random.nextFloat() - (float)0.5) / 1000, (random.nextFloat() - (float)0.5) / 1000, @@ -220,8 +222,6 @@ public class Main extends MeshViewer { } } - public static int verts = 0; - public void anneal() throws Exception { int verts = 0; while(true) { @@ -231,13 +231,14 @@ public class Main extends MeshViewer { repaint(); for(Mesh.Vert v : hs) rand(10,v); } + tile.rebuildPointSet(); breakit(); repaint(); - goal.unscoreAll(); + goal.unApplyQuadricToNeighborAll(); repaint(); tile.recomputeAllFundamentalQuadrics(); repaint(); - goal.rescoreAll(); + goal.applyQuadricToNeighborAll(); } } @@ -248,4 +249,5 @@ public class Main extends MeshViewer { Main main = new Main(stlf, f); main.anneal(); } + } \ No newline at end of file