X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2FMesh.java;h=b25d1b73dcb5847c4498c69510058bf78f1d8690;hp=efeb89b484b9115f10f53ad0d6682b64090cef04;hb=43e3ce680ac8b6d621bb59c0eed326d87e728a61;hpb=5d34d8a30db663c0d3a6e6ebaa05744e79cc5be8 diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index efeb89b..b25d1b7 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -66,6 +66,24 @@ public class Mesh implements Iterable { } } + public void unscore() { + HashSet done = new HashSet(); + for(T t : this) + for(Vert p : new Vert[] { t.v1(), t.v2(), t.v3() }) { + if (done.contains(p)) continue; + done.add(p); + p.unscore(); + } + } + public void fundamental() { + HashSet done = new HashSet(); + for(T t : this) + for(Vert p : new Vert[] { t.v1(), t.v2(), t.v3() }) { + if (done.contains(p)) continue; + done.add(p); + p.recomputeFundamentalQuadric(); + } + } public float rescore() { int num = 0; double dist = 0; @@ -75,6 +93,7 @@ public class Mesh implements Iterable { if (done.contains(p)) continue; done.add(p); p.rescore(); + } return (float)(dist/num); } @@ -203,7 +222,7 @@ public class Mesh implements Iterable { s2 = quadric==null ? 0 : po.p.distance(quadric.p); oldscore = (float)(s1 + s2); */ - oldscore = quadric.preAndPostMultiply(p); + oldscore = quadric_count == 0 ? 0 : (quadric.preAndPostMultiply(p) / quadric_count); score += oldscore; } @@ -226,13 +245,13 @@ public class Mesh implements Iterable { rescore(); // recompute fundamental quadrics of all vertices sharing a face + /* E e = this.e; do { - e.t.v1().recomputeFundamentalQuadric(); - e.t.v2().recomputeFundamentalQuadric(); - e.t.v3().recomputeFundamentalQuadric(); + e.p2.recomputeFundamentalQuadric(); e = e.pair.next; } while(e != this.e); + */ boolean good = true; /*