X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FHasBindingGroup.java;fp=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FHasBindingGroup.java;h=2a443140630b1129e8746d1914d1b4cf7b6e02ea;hp=d884672ac7109bb0b1ebbca9c5805593dd4bb212;hb=78303bd63882bf70a079f25874a8ff78fa0f652c;hpb=3fa3102dca9b7eee00ea28a63cc906951c26053b diff --git a/src/edu/berkeley/qfat/geom/HasBindingGroup.java b/src/edu/berkeley/qfat/geom/HasBindingGroup.java index d884672..2a44314 100644 --- a/src/edu/berkeley/qfat/geom/HasBindingGroup.java +++ b/src/edu/berkeley/qfat/geom/HasBindingGroup.java @@ -1,6 +1,7 @@ package edu.berkeley.qfat.geom; import javax.media.opengl.*; import java.util.*; +import edu.berkeley.qfat.Mesh; public abstract class HasBindingGroup { @@ -19,10 +20,11 @@ public abstract class HasBindingGroup { if (getBindingMatrix(other).equals(bindingMatrix)) return; /* - throw new Error("rebind attempt: "+this+" and "+other+" with " - + bindingMatrix - + "; expected " - + getBindingMatrix(other)); + if (this instanceof Mesh.E) + throw new Error("rebind attempt: "+this+" and "+other+" with " + + bindingMatrix + + "; expected " + + getBindingMatrix(other)); */ Matrix vom = other.getBindingMatrix(bindingGroup.getMaster()); Matrix v2 = bindingMatrix; @@ -68,6 +70,19 @@ public abstract class HasBindingGroup { return bindingGroup.getMaster(); } + public Matrix getConstraint() { + if (bindingGroup==null) return Matrix.ONE; + Matrix v = getBindingMatrix(getMaster()); + 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() { if (bindingGroup==null) return; bindingGroup.unbind(this);