checkpoint
[anneal.git] / src / edu / berkeley / qfat / geom / HasBindingGroup.java
index d884672..2a44314 100644 (file)
@@ -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);