summaryrefslogtreecommitdiff
path: root/src/tesseract
diff options
context:
space:
mode:
authorSteve <steveb9@u.washington.edu>2011-02-19 05:14:22 +0000
committerSteve <steveb9@u.washington.edu>2011-02-19 05:14:22 +0000
commitdba5b22dd4a913b5addff0558e861c6613156783 (patch)
treef83a0be8fd19ec0e6c2c76f9ed4616609693338e /src/tesseract
parentca82b8a601c67e6731bc06d212fb2153a4170c0c (diff)
added surfBoard
Diffstat (limited to 'src/tesseract')
-rw-r--r--src/tesseract/TesseractUI.java4
-rw-r--r--src/tesseract/menuitems/DonutMenuItem.java2
-rw-r--r--src/tesseract/menuitems/SurfBoardMenuItem.java95
-rw-r--r--src/tesseract/newmenu/MenuItem.java1
-rw-r--r--src/tesseract/objects/Ellipsoid.java2
5 files changed, 102 insertions, 2 deletions
diff --git a/src/tesseract/TesseractUI.java b/src/tesseract/TesseractUI.java
index 9fd91b9..fed3939 100644
--- a/src/tesseract/TesseractUI.java
+++ b/src/tesseract/TesseractUI.java
@@ -41,6 +41,7 @@ import tesseract.menuitems.IcosahedronMenuItem;
import tesseract.menuitems.ParticleEmitterMenuItem;
import tesseract.menuitems.ParticleMenuItem;
import tesseract.menuitems.PlanarPolygonMenuItem;
+import tesseract.menuitems.SurfBoardMenuItem;
import tesseract.objects.Box;
import tesseract.objects.ChainLink2;
import tesseract.objects.PhysicalObject;
@@ -132,7 +133,8 @@ public class TesseractUI extends JFrame {
new EllipsoidMenuItem(myWorld),
new IcosahedronMenuItem(myWorld),
new ChainLinkMenuItem(myWorld),
- new DonutMenuItem(myWorld)
+ new DonutMenuItem(myWorld),
+ new SurfBoardMenuItem(myWorld)
};
createMenu();
setupCanvas();
diff --git a/src/tesseract/menuitems/DonutMenuItem.java b/src/tesseract/menuitems/DonutMenuItem.java
index 990e0fd..8a52875 100644
--- a/src/tesseract/menuitems/DonutMenuItem.java
+++ b/src/tesseract/menuitems/DonutMenuItem.java
@@ -27,7 +27,7 @@ public class DonutMenuItem extends TesseractMenuItem {
private float scale = 1f;
private float sliceRadius = .06f; //inside whole
- private int sliceDivisions = 50;
+ private int sliceDivisions = 25;
private float arcRadius = .08f; //outside whole
private int arcDivisions = 30;
diff --git a/src/tesseract/menuitems/SurfBoardMenuItem.java b/src/tesseract/menuitems/SurfBoardMenuItem.java
new file mode 100644
index 0000000..34d5d1f
--- /dev/null
+++ b/src/tesseract/menuitems/SurfBoardMenuItem.java
@@ -0,0 +1,95 @@
+package tesseract.menuitems;
+
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.media.j3d.Appearance;
+import javax.media.j3d.ColoringAttributes;
+import javax.media.j3d.Material;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.vecmath.Color3f;
+import javax.vecmath.Vector3f;
+
+import com.sun.j3d.utils.geometry.Sphere;
+
+import tesseract.World;
+import tesseract.objects.Ellipsoid;
+import tesseract.objects.PlanarPolygon;
+
+/**
+ * Ellipsoid Menu Item.
+ *
+ * @author Steve Bradshaw
+ */
+public class SurfBoardMenuItem extends TesseractMenuItem {
+
+ /**
+ * Serial ID.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Constructor for the menu item.
+ *
+ * @param theWorld The world into which we add.
+ */
+ public SurfBoardMenuItem(final World theWorld) {
+ super(theWorld, "SurfBoard");
+ }
+
+ /**
+ * Action handler.
+ *
+ * @param arg0 Unused event info.
+ */
+ public void actionPerformed(final ActionEvent arg0) {
+
+ createParameterMenu();
+
+ //If the default button is checked, the frame will close.
+ final JCheckBox defaultButton = getDefaultButton();
+ final JFrame params = getParamFrame();
+ //final JButton enterButton = getEnterButton();
+
+ defaultButton.addActionListener(new ActionListener() {
+ public void actionPerformed(final ActionEvent ev) {
+ if (defaultButton.isSelected()) {
+ Appearance eApp = new Appearance();
+ Material eggMat = new Material();
+ eggMat.setDiffuseColor(0f, .5f, 1f);
+ eApp.setMaterial(eggMat);
+ eApp.setColoringAttributes(new ColoringAttributes(0f, 1f, 1f, ColoringAttributes.ALLOW_COLOR_WRITE));
+ myWorld.addObject(new Ellipsoid(getPosition(), 1, 0.05f, new Sphere().getPrimitiveFlags(), 40, eApp, 0.2f, 4.0f));
+ params.dispose();
+ }
+ }
+ });
+
+ /*enterButton.addActionListener(new ActionListener() {
+ public void actionPerformed(final ActionEvent event) {
+ String string = getPositionField().getText();
+ Vector3f pos = parseVector(string);
+ setPosition(pos);
+
+ String string2 = getRadiusField().getText();
+ float radius = Float.parseFloat(string2);
+ setRadius(radius);
+
+ String string3 = getMassField().getText();
+ float mass = Float.parseFloat(string3);
+ setMass(mass);
+
+ if (event.getSource() == enterButton) {
+ myWorld.addObject(new Ellipsoid(getPosition(), getRadius()));
+ params.dispose();
+ }
+ }
+ });*/
+
+ }
+}
diff --git a/src/tesseract/newmenu/MenuItem.java b/src/tesseract/newmenu/MenuItem.java
index 96db2b4..7324b7f 100644
--- a/src/tesseract/newmenu/MenuItem.java
+++ b/src/tesseract/newmenu/MenuItem.java
@@ -61,6 +61,7 @@ public abstract class MenuItem extends JMenuItem implements ActionListener{
public MenuItem() {};
+
public MenuItem (Map <String, Object> theParams, World theWorld) {
myFrame = new JFrame();
myPanel = new JPanel(new GridLayout(myParameters.keySet().size(), 2));
diff --git a/src/tesseract/objects/Ellipsoid.java b/src/tesseract/objects/Ellipsoid.java
index 25c924e..46bd88a 100644
--- a/src/tesseract/objects/Ellipsoid.java
+++ b/src/tesseract/objects/Ellipsoid.java
@@ -139,6 +139,8 @@ public class Ellipsoid extends PhysicalObject {
Transform3D tmp = new Transform3D();
tmp.set(new Matrix3f(1.0f, 0.0f, 0.0f, 0.0f, b, 0.0f, 0.0f, 0.0f, c));
TransformGroup tg = new TransformGroup(tmp);
+ tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
+ tg.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
tg.addChild(sphere);
return tg;