From: adam Date: Thu, 20 Dec 2007 19:42:38 +0000 (-0800) Subject: checkpoint X-Git-Url: http://git.megacz.com/?p=anneal.git;a=commitdiff_plain;h=30607e6bf4827d90fc055c8db1e7f363ef2693e6 checkpoint darcs-hash:20071220194238-5007d-e8d54190d2f486a44e65df8874ff7fb9c32a2b36.gz --- diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index 34a8de2..57eda26 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -90,6 +90,7 @@ public class Mesh implements Iterable { private Vertex(Point p) { this.p = p; this.goodp = p; + this.oldp = p; if (vertices.get(p) != null) throw new Error(); vertices.add(this); } @@ -154,7 +155,7 @@ public class Mesh implements Iterable { if (ang > Math.PI) throw new Error(); if (ang < -Math.PI) throw new Error(); //float minangle = (float)(Math.PI * 0.8); - nerror += ((ang / Math.PI)*(ang/Math.PI)) * e.length() * 0.01; + nerror += ((ang / Math.PI)*(ang/Math.PI)) * e.length() * 0.05; //System.out.println(((ang / Math.PI)*(ang/Math.PI)) * 0.000001); //if (ang > minangle) nerror += (ang - minangle); /* @@ -184,7 +185,7 @@ public class Mesh implements Iterable { if (bindingGroup != null) { Matrix m2 = null; for(int i=0; i<20 && !m.equals(m2); i++) { - m2 = m.times(bindingGroup.krank); + m2 = m.times(getConstraint()); //System.out.println(m.minus(m2)); } if (!m.equals(m2)) return true; @@ -222,6 +223,7 @@ public class Mesh implements Iterable { unApplyQuadricToNeighbor(); + boolean illegalbefore = illegal; illegal = false; /* if (this.p.minus(newp).mag() > 0.1 && !ignoreProblems) { @@ -243,17 +245,17 @@ public class Mesh implements Iterable { } for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) e.p2.quadricStale = true; - return !illegal; + return !illegal || (illegalbefore && illegal); } public void checkLegality() { - + /* for(E e = this.e; e!=null; e=e.pair.next==this.e?null:e.pair.next) { if (Math.abs(e.dihedralAngle()) > (Math.PI * 0.9) || Math.abs(e.next.dihedralAngle()) > (Math.PI * 0.9)) illegal = true; if (e.t.aspect() < 0.2) illegal = true; } - + */ if (!illegal) triangles.range(oldp, this.p, (Visitor)this); } @@ -452,10 +454,10 @@ public class Mesh implements Iterable { e.p2.getE(mid).pair. bindTo(e.getBindingMatrix(firste), firstq); e.p2.getE(mid).pair.pair.bindTo(e.getBindingMatrix(firste), firstq.pair); } - if (firste.bindingGroup != null) - firste.bindingGroup.setKrank(bindingGroup.krank); - if (firstq.bindingGroup != null) - firstq.bindingGroup.setKrank(bindingGroup.krank); + /* + first.setConstraint(firste.getConstraint()); + firstq.setConstraint(firste.getConstraint()); + */ return null; } diff --git a/src/edu/berkeley/qfat/geom/BindingGroup.java b/src/edu/berkeley/qfat/geom/BindingGroup.java index 7a64af9..0c3049f 100644 --- a/src/edu/berkeley/qfat/geom/BindingGroup.java +++ b/src/edu/berkeley/qfat/geom/BindingGroup.java @@ -25,7 +25,7 @@ public class BindingGroup implements Iterable { } Matrix v = getMatrix(bg.master, master); - krank = krank.times(v.inverse().times(bg.krank).times(v)); + //krank = krank.times(v.inverse().times(bg.krank).times(v)); HashSet stuff = new HashSet(); for(HasBindingGroup hbg : bg.matrices.keySet()) diff --git a/src/edu/berkeley/qfat/geom/HasBindingGroup.java b/src/edu/berkeley/qfat/geom/HasBindingGroup.java index 2a44314..65d581f 100644 --- a/src/edu/berkeley/qfat/geom/HasBindingGroup.java +++ b/src/edu/berkeley/qfat/geom/HasBindingGroup.java @@ -26,11 +26,7 @@ public abstract class HasBindingGroup { + "; expected " + getBindingMatrix(other)); */ - Matrix vom = other.getBindingMatrix(bindingGroup.getMaster()); - Matrix v2 = bindingMatrix; - Matrix v3 = getBindingMatrix(other); - Matrix m = vom.inverse().times(v2.inverse()).times(v3).times(vom); - bindingGroup.krank = bindingGroup.krank.times(m); + setConstraint(bindingMatrix); /* System.err.println("WARNING: discarding rebind attempt: "+this+" and "+other+m); */ @@ -76,11 +72,9 @@ public abstract class HasBindingGroup { return v.inverse().times(bindingGroup.krank).times(v); } public void setConstraint(Matrix m) { - /* if (bindingGroup==null) bindingGroup = new BindingGroup(this); Matrix v = getBindingMatrix(getMaster()); bindingGroup.krank = bindingGroup.krank.times(v.inverse().times(m).times(v)); - */ } public void unbind() {