private RTree<T> triangles = new RTree<T>();
private PointSet<Vertex> vertices = new PointSet<Vertex>();
-
- public boolean option_wireframe = false;
+ public boolean option_wireframe = false;
public boolean option_errorNormals = false;
+ public boolean option_selectable = true;
public void render(GL gl, Matrix m) {
if (option_wireframe) {
setError(nerror);
}
- public boolean move(Matrix m, boolean ignoreProblems) {
+ public boolean move(Vec vv, boolean ignoreProblems) {
boolean good = true;
// M * t1 = M * t1.getMatrix(t2) * t2
if (bindingGroup!=null && this != bindingGroup.getMaster()) {
- Matrix v = getBindingMatrix(bindingGroup.getMaster());
- return ((Vertex)bindingGroup.getMaster()).move(v.inverse().times(m).times(v), ignoreProblems);
+ Matrix m2 = getBindingMatrix(bindingGroup.getMaster());
+ Vec v2 = m2.times(vv.plus(getPoint())).minus(m2.times(getPoint()));
+ return ((Vertex)bindingGroup.getMaster()).move(v2, ignoreProblems);
}
+ Point op = this.p;
+ Point pp = vv.plus(getPoint());
if (bindingGroup != null) {
- Matrix m2 = null;
- for(int i=0; i<20 && !m.equals(m2); i++) {
- m2 = m.times(getConstraint());
+ /*
+ for(int i=0; i<20 ; i++) {
+ Point p2 = getConstraint().times(pp);
+ pp = pp.midpoint(p2);
//System.out.println(m.minus(m2));
}
- if (!m.equals(m2)) return true;
+ */
+ pp = getConstraint().times(pp);
}
+ pp = pp.minus(op).norm().times(vv.mag()).plus(op);
ok = false;
- Point op = this.p;
- Point pt = m.times(this.p);
+ Point pt = pp;
for(Vertex v : (Iterable<Vertex>)getBoundPeers()) {
Point pt2 = v.getBindingMatrix(this).times(pt);
/*
unApplyQuadricToNeighbor();
-
boolean illegalbefore = illegal;
illegal = false;
/*