X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2FMesh.java;h=b25d1b73dcb5847c4498c69510058bf78f1d8690;hp=e66c814bfab1244a4127db9d3c027be6d34f57de;hb=43e3ce680ac8b6d621bb59c0eed326d87e728a61;hpb=95776aa09a9b304bc7599b81699b595fdecd1f3a diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index e66c814..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; @@ -74,8 +92,8 @@ public class Mesh implements Iterable { for(Vert p : new Vert[] { t.v1(), t.v2(), t.v3() }) { if (done.contains(p)) continue; done.add(p); - //p.rescore(); - p.recomputeFundamentalQuadric(); + p.rescore(); + } return (float)(dist/num); } @@ -204,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; }