- // know: self = bindingGroup[self] * master
- // know: other = other.bindingGroup[other] * other.bindingGroup.master
- // want: self = bindingMatrix * other
- // therefore: master = bindingGroup[self]^-1 * bindingMatrix * other
- // therefore: = bindingGroup[self]^-1 * bindingMatrix * other.bindingGroup[other] * other.bindingGroup.master
- public void bindTo(Matrix bindingMatrix, HasBindingGroup other) {
+ /**
+ * Merge the BGs of this and other, ensuring that
+ * this==bindingMatrix*other, and treating differences of less
+ * than epsilon as irrelevant for AffineConstraint purposes.
+ */
+ public void bindTo(Matrix bindingMatrix, HasBindingGroup other, float epsilon) {
+ // know: self = bindingGroup[self] * master
+ // know: other = other.bindingGroup[other] * other.bindingGroup.master
+ // want: self = bindingMatrix * other
+ // therefore: master = bindingGroup[self]^-1 * bindingMatrix * other
+ // therefore: = bindingGroup[self]^-1 * bindingMatrix * other.bindingGroup[other] * other.bindingGroup.master