X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fbind%2FBindingGroup.java;h=6b06b47b44fcee8f213e20871e155ce5977b944c;hp=00a7dd70b7d13040035c03810ba6c0c63e2aa014;hb=HEAD;hpb=8084a784db5cd0f688d230ab9624ab6966265f39 diff --git a/src/edu/berkeley/qfat/bind/BindingGroup.java b/src/edu/berkeley/qfat/bind/BindingGroup.java index 00a7dd7..6b06b47 100644 --- a/src/edu/berkeley/qfat/bind/BindingGroup.java +++ b/src/edu/berkeley/qfat/bind/BindingGroup.java @@ -1,6 +1,5 @@ package edu.berkeley.qfat.bind; import edu.berkeley.qfat.geom.*; -import javax.media.opengl.*; import java.util.*; /** @@ -22,7 +21,7 @@ class BindingGroup implements Iterable { */ private HashMap matrices = new HashMap(); - public BindingGroup(T master) { + BindingGroup(T master) { this.master = master; matrices.put(master, Matrix.ONE); } @@ -34,11 +33,18 @@ class BindingGroup implements Iterable { void merge(BindingGroup bg, Matrix m, float epsilon) { if (bg==this) { if (m.equalsModuloEpsilon(Matrix.ONE, epsilon)) return; + /* + if (master instanceof edu.berkeley.qfat.Mesh.Vertex) + System.err.println(m.times(m)); + */ // FIXME: what if points do not fall on the merged constraint-line? constraint = constraint.intersect(m.getAffineConstraint(epsilon), epsilon); return; } + // bg.master = m * master + // hbg = bg.getMatrix(hbg) * bg.master + // hbg = bg.getMatrix(hbg) * m * master for(HasBindingGroup hbg : bg) { matrices.put((T)hbg, bg.getMatrix((T)hbg).times(m)); hbg.bindingGroup = this; @@ -54,19 +60,19 @@ class BindingGroup implements Iterable { bg.matrices = null; } - public Matrix getMatrix(T t) { return matrices.get(t); } + Matrix getMatrix(T t) { return matrices.get(t); } public Iterator iterator() { return matrices.keySet().iterator(); } /** t1 = getMatrix(t1, t2) * t2 */ - public Matrix getMatrix(T t1, T t2) { + Matrix getMatrix(T t1, T t2) { // t1 = getMatrix(t1) * master // getMatrix(t2)^-1 * t2 = master // t1 = getMatrix(t1) * getMatrix(t2)^-1 * t2 return getMatrix(t1).times(getMatrix(t2).inverse()); } - public AffineConstraint getAffineConstraint(T t) { + AffineConstraint getAffineConstraint(T t) { return constraint.multiply(matrices.get(t)); } @@ -97,7 +103,7 @@ class BindingGroup implements Iterable { matrices = newmatrices; } - public boolean contains(HasBindingGroup t) { + boolean contains(HasBindingGroup t) { return matrices.get((T)t) != null; } }