}
}
+ public void unscore() {
+ HashSet<Vert> done = new HashSet<Vert>();
+ 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<Vert> done = new HashSet<Vert>();
+ 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;
if (done.contains(p)) continue;
done.add(p);
p.rescore();
+
}
return (float)(dist/num);
}
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;
}
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;
/*