+ if (quadric_count == 0) {
+ if (!tilemesh) {
+ }
+ else if (nearest_in_other_mesh == null) {
+ if (score_against != null) {
+ Vert ne = score_against.nearest(p);
+ oldscore = ne.fundamentalQuadric().preAndPostMultiply(p) * 100 * 10;
+ } else {
+ oldscore = 0;
+ }
+ } else {
+ oldscore = nearest_in_other_mesh.fundamentalQuadric().preAndPostMultiply(p) * 100 * 10;
+ }
+ } else {
+ oldscore = (quadric.preAndPostMultiply(p) * 100) / quadric_count;
+ }
+
+ oldscore = oldscore;
+
+ int numaspects = 0;
+ float aspects = 0;
+ E e = this.e;
+ do {
+ //double ang = Math.abs(e.crossAngle());
+ double ang = Math.abs(e.crossAngle());
+ if (ang > Math.PI) throw new Error();
+ /*
+ if (e.t != null) {
+ numaspects++;
+ aspects += e.t.aspect()*e.t.aspect();
+ }
+ */
+
+ float minangle = (float)(Math.PI * 0.8);
+ if (ang > minangle)
+ oldscore += (ang - minangle);
+
+ e = e.pair.next;
+ } while (e != this.e);
+ if (numaspects > 0) oldscore += (aspects / numaspects);
+
+ //System.out.println(oldscore);
+ //oldscore = oldscore*oldscore;