- public boolean isBoundTo(Vertex p) {
- for(Vertex px = p; px!=null; px=(px.bound_to==p?null:px.bound_to))
- if (px==this)
- return true;
- return false;
- }
-
- public void unbind() { bound_to = this; binding = Matrix.ONE; }
- public void bind(Vertex p) { bind(p, Matrix.ONE); }
- public void bind(Vertex p, Matrix binding) {
- if (isBoundTo(p)) return;
- Vertex temp_bound_to = p.bound_to;
- Matrix temp_binding = p.binding;
- p.bound_to = this.bound_to;
- p.binding = binding.times(this.binding); // FIXME: may have order wrong here
- this.bound_to = temp_bound_to;
- this.binding = temp_binding.times(temp_binding); // FIXME: may have order wrong here
- }