From 25e20292fd5cab60f85ff8af42357e396c97f198 Mon Sep 17 00:00:00 2001 From: adam Date: Mon, 7 Jul 2008 22:22:43 -0700 Subject: [PATCH] checkpoint darcs-hash:20080708052243-5007d-61efbbb2e5fc56eaf0849e6350e039ba0a819193.gz --- src/edu/berkeley/qfat/Main.java | 25 ++++++++++++++++++++----- src/edu/berkeley/qfat/Mesh.java | 2 ++ src/edu/berkeley/qfat/geom/Plane.java | 13 ++++++++++--- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/edu/berkeley/qfat/Main.java b/src/edu/berkeley/qfat/Main.java index 178ca5a..fbef9c2 100644 --- a/src/edu/berkeley/qfat/Main.java +++ b/src/edu/berkeley/qfat/Main.java @@ -590,8 +590,7 @@ public class Main extends InteractiveMeshViewer { 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)), @@ -632,17 +631,33 @@ public class Main extends InteractiveMeshViewer { 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 { bindEdge(e, m); } public void bindEdge(E e, Matrix m) { + /* for(E e_ : (Iterable)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())); @@ -723,6 +724,7 @@ public class Mesh implements Iterable { 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); } diff --git a/src/edu/berkeley/qfat/geom/Plane.java b/src/edu/berkeley/qfat/geom/Plane.java index fe23b83..966eebf 100644 --- a/src/edu/berkeley/qfat/geom/Plane.java +++ b/src/edu/berkeley/qfat/geom/Plane.java @@ -79,10 +79,17 @@ public class Plane implements AffineConstraint { } 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); -- 1.7.10.4