X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2FMesh.java;h=d5e0db2f0612205585a3f7131628f5e20fa61eff;hp=951f53af85312dce770d989c6615d2355a48597d;hb=468b086402bb0ccae7ce4dda8b009d61bfc37a71;hpb=de98420094a537a70140842ff185e6d113ad270e diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index 951f53a..d5e0db2 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -6,6 +6,7 @@ import javax.swing.*; import javax.media.opengl.*; import javax.media.opengl.glu.*; import edu.berkeley.qfat.geom.*; +import edu.berkeley.qfat.geom.HasBindingGroup; import edu.wlu.cs.levy.CG.KDTree; import edu.berkeley.qfat.geom.Point; import com.infomatiq.jsi.IntProcedure; @@ -165,7 +166,7 @@ public class Mesh implements Iterable { for(Vertex p : (Iterable)getBoundPeers()) if (good || ignoreProblems) p.reComputeErrorAround(); - else p.transform(p.oldp, true); + else p.transform(p.oldp, true); return good; } @@ -305,7 +306,7 @@ public class Mesh implements Iterable { } /** [UNIQUE] an edge */ - public final class E implements Comparable { + public final class E extends HasBindingGroup implements Comparable { public final Vertex p1, p2; T t; // triangle to our "left" @@ -318,6 +319,16 @@ public class Mesh implements Iterable { public boolean intersects(T t) { return t.intersects(p1.p, p2.p); } + public void bindingGroupChanged(edu.berkeley.qfat.geom.BindingGroup newBindingGroup_) { + edu.berkeley.qfat.geom.BindingGroup newBindingGroup = (edu.berkeley.qfat.geom.BindingGroup)newBindingGroup_; + if (newBindingGroup==null) return; + if (this==newBindingGroup.getMaster()) return; + for(E eother : (Iterable)newBindingGroup) { + this.next.bindTo(newBindingGroup.getMatrix(eother), eother.next); + this.prev.bindTo(newBindingGroup.getMatrix(eother), eother.prev); + } + } + public float stretchRatio() { Vertex nearest = error_against.nearest(midpoint()); float nearest_distance = midpoint().distance(nearest.p); @@ -327,8 +338,6 @@ public class Mesh implements Iterable { return nearest_distance/other_distance; } public float comparator() { - - return length(); //return t==null?0:(1/t.aspect()); }