remove two menus, get app to quit when window closes
[anneal.git] / src / edu / berkeley / qfat / Main.java
index 178ca5a..3d0b0e4 100644 (file)
@@ -12,6 +12,56 @@ import edu.berkeley.qfat.stl.*;
 import edu.berkeley.qfat.geom.Point;
 import edu.berkeley.qfat.geom.Polygon;
 
+/*
+
+
+Todo
+- review catmull-clark; move vertex points?
+- re-anneal fish
+
+- show constraints (?)
+- show in red if user tries to move a point to an illegal location
+
+- eliminate use of bindinggroupschanged()
+
+- post qfat on my software page
+
+
+With Sequin
+- constraints admit intersections (lattice)
+- constraints may be transformed linearly
+
+
+
+
+Log console
+  - blend-shaded overlay?  slick.
+
+face/vertex count
+rendering FPS
+ability to not draw edges between faces
+
+
+three circumcircles showing crystal ball -- these don't get scaled
+axes?
+
+drawing modes:
+  - bounding box
+  - vertices
+  - edges
+  - visible-edges
+  - flat with or without edges
+  - shaded with or without edges
+  * contrasting-faces
+
+
+quadric decimation?
+
+show normals
+show bounding box
+show axes (big+fat)
+ */
+
 // TO DO:
 //
 // - Ability to snap three views to orthgonal
@@ -590,8 +640,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 +681,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();
 
@@ -856,8 +921,8 @@ public class Main extends InteractiveMeshViewer {
 
             // Finally, add all the menus to the menu bar.
             add(tileMenu);
-            add(goalMenu);
-            add(hideMenu);
+            //add(goalMenu);
+            //add(hideMenu);
         }
 
     }
@@ -1020,11 +1085,27 @@ public class Main extends InteractiveMeshViewer {
         f.setLayout(new BorderLayout());
         Main main = new Main(f);
         f.add(main, BorderLayout.CENTER);
-        f.setJMenuBar(main.new MyMenuBar());
+
+        f.addWindowListener(new WindowListener() {
+                public void windowActivated(WindowEvent e) { }
+                public void windowClosed(WindowEvent e) { System.exit(0); }
+                public void windowClosing(WindowEvent e) { System.exit(0); }
+                public void windowDeactivated(WindowEvent e)  { }
+                public void windowDeiconified(WindowEvent e)  { }
+                public void windowIconified(WindowEvent e)  { }
+                public void windowOpened(WindowEvent e) { }
+            });
+
         f.pack();
         f.show();
         f.setSize(900, 900);
         f.doLayout();
+
+        JFrame f2 = new JFrame();
+        f2.setJMenuBar(main.new MyMenuBar());
+        f2.setSize(100,100);
+        f2.show();
+
         main.anneal();
     }