projects
/
anneal.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
checkpoint
[anneal.git]
/
src
/
edu
/
berkeley
/
qfat
/
geom
/
BindingGroup.java
diff --git
a/src/edu/berkeley/qfat/geom/BindingGroup.java
b/src/edu/berkeley/qfat/geom/BindingGroup.java
index
d1ff8b8
..
0c3049f
100644
(file)
--- a/
src/edu/berkeley/qfat/geom/BindingGroup.java
+++ b/
src/edu/berkeley/qfat/geom/BindingGroup.java
@@
-4,6
+4,8
@@
import java.util.*;
public class BindingGroup<T extends HasBindingGroup> implements Iterable<T> {
public class BindingGroup<T extends HasBindingGroup> implements Iterable<T> {
+ public Matrix krank = Matrix.ONE;
+
private T master = null;
private HashMap<T,Matrix> matrices = new HashMap<T,Matrix>();
private T master = null;
private HashMap<T,Matrix> matrices = new HashMap<T,Matrix>();
@@
-12,15
+14,26
@@
public class BindingGroup<T extends HasBindingGroup> implements Iterable<T> {
matrices.put(master, Matrix.ONE);
}
matrices.put(master, Matrix.ONE);
}
+ public int size() { return matrices.size(); }
+
+ public void setKrank(Matrix k) { krank = krank.times(k); }
public void merge(BindingGroup<T> bg, Matrix m) {
public void merge(BindingGroup<T> bg, Matrix m) {
+ if (bg==this) throw new Error();
for(HasBindingGroup hbg : bg.matrices.keySet()) {
matrices.put((T)hbg, bg.matrices.get(hbg).times(m));
hbg.bindingGroup = this;
}
for(HasBindingGroup hbg : bg.matrices.keySet()) {
matrices.put((T)hbg, bg.matrices.get(hbg).times(m));
hbg.bindingGroup = this;
}
+
+ Matrix v = getMatrix(bg.master, master);
+ //krank = krank.times(v.inverse().times(bg.krank).times(v));
+
+ HashSet<HasBindingGroup> stuff = new HashSet<HasBindingGroup>();
for(HasBindingGroup hbg : bg.matrices.keySet())
for(HasBindingGroup hbg : bg.matrices.keySet())
- hbg.bindingGroupChanged(this);
+ stuff.add(hbg);
bg.matrices.clear();
bg.master = null;
bg.matrices.clear();
bg.master = null;
+ for(HasBindingGroup hbg : stuff)
+ hbg.bindingGroupChanged(this);
}
public T getMaster() { return master; }
}
public T getMaster() { return master; }