transforms = new Matrix[] {
- //Matrix.rotate(new Vec(1,0,0), (float)Math.PI),
- //Matrix.reflect(new Vec(1,0,0)),
+ //Matrix.reflect(new Vec( 0, height, -z).norm()),
Matrix.translate(new Vec(-unit, 0, 0)),
Matrix.translate(new Vec( unit, 0, 0)),
transforms = new Matrix[] {
Matrix.reflect(new Vec( 0, height, -z).norm()),
//Matrix.reflect(new Vec( 0, -height, z)),
- Matrix.ONE
+ Matrix.ONE,
+ Matrix.translate(new Vec(-unit, 0, 0)),
+ Matrix.translate(new Vec( unit, 0, 0)),
+ /*
+ Matrix.translate(new Vec(-cos, 0, sin)),
+ Matrix.translate(new Vec( cos, 0, sin)),
+ Matrix.translate(new Vec(-cos, 0, -sin)),
+ Matrix.translate(new Vec( cos, 0, -sin)),
+
+ Matrix.translate(new Vec( 0, height, -z)),
+ Matrix.translate(new Vec(-r, height, x)),
+ Matrix.translate(new Vec( r, height, x)),
+ Matrix.translate(new Vec( 0, -height, z)),
+ Matrix.translate(new Vec(-r, -height, -x)),
+ Matrix.translate(new Vec( r, -height, -x)),
+ */
};
+
//for(int i=0; i<transforms.length; i++) transforms[i] = Matrix.translate(m.times(vecs[i]));
- /*
+
Matrix m = Matrix.scale(1.9f, 1f ,1);
//Matrix m = Matrix.scale(1f, 2.1f, 1f);
tile.transform(m);
for(int i=0; i<transforms.length; i++)
transforms[i] = preMultiplyTranslationalComponentBy(transforms[i], m);
- */
+
fixupTile();
bindEdge(e, m);
}
public void bindEdge(E e, Matrix m) {
+ /*
for(E e_ : (Iterable<E>)e.getBoundPeers()) {
if (e.v1.getPoint().distance((e.getBindingMatrix(e_).times(e_.v1.getPoint()))) > 0.01f)
throw new RuntimeException("blah! " + e.v1.getPoint() + " " + e.getBindingMatrix(e_).times(e_.v1.getPoint()));
if (v2.getPoint().distance(m.times(e.getBindingMatrix(e_).times(e_.v2.getPoint()))) > 0.01f)
throw new RuntimeException("blah! " + v2.getPoint() + " " + m.times(e_.v2.getPoint()));
}
+ */
this.bindTo(m, e, EPSILON);
this.pair.bindTo(m, e.pair, EPSILON);
}
} else if (c instanceof Line) {
Line l = (Line)c;
- if ( Math.abs(a + b*l.m + this.c*l.n) <= epsilon &&
- Math.abs(b * l.c + this.c * l.d + d) <= epsilon)
+ if (Math.abs(a + b*l.m + this.c*l.n) <= epsilon &&
+ Math.abs(b * l.c + this.c*l.d + d) <= epsilon)
return l;
- throw new RuntimeException("not yet implemented");
+
+ // FIXME: parallel case
+
+ float x = (d - b*l.c - this.c*l.d) / (a + b*l.m + this.c*l.n);
+ float y = l.m*x+l.c;
+ float z = l.n*x+l.d;
+ return new Point(x,y,z);
+ //throw new RuntimeException("not yet implemented");
} else
return c.intersect(this, epsilon);