checkpoint
authoradam <adam@megacz.com>
Tue, 8 Jul 2008 05:22:43 +0000 (22:22 -0700)
committeradam <adam@megacz.com>
Tue, 8 Jul 2008 05:22:43 +0000 (22:22 -0700)
darcs-hash:20080708052243-5007d-61efbbb2e5fc56eaf0849e6350e039ba0a819193.gz

src/edu/berkeley/qfat/Main.java
src/edu/berkeley/qfat/Mesh.java
src/edu/berkeley/qfat/geom/Plane.java

index 178ca5a..fbef9c2 100644 (file)
@@ -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<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();
 
index 502fa6d..31e0590 100644 (file)
@@ -713,6 +713,7 @@ public class Mesh implements Iterable<Mesh.T> {
             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()));
@@ -723,6 +724,7 @@ public class Mesh implements Iterable<Mesh.T> {
                 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);
         }
index fe23b83..966eebf 100644 (file)
@@ -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);