From 83d6f2ea8aaf45203389320a8e7218c23545b818 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Tue, 8 Mar 2011 07:57:45 +0000 Subject: Last Call! --- src/tesseract/generators/GeneratorsMenu.java | 29 +++++++++++++++++++ src/tesseract/generators/MenuItem.java | 38 ++++++++++++++++++++++++ src/tesseract/generators/ParticleField.java | 37 ++++++++++++++++++++++++ src/tesseract/generators/SphereField.java | 43 ++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+) create mode 100644 src/tesseract/generators/GeneratorsMenu.java create mode 100644 src/tesseract/generators/MenuItem.java create mode 100644 src/tesseract/generators/ParticleField.java create mode 100644 src/tesseract/generators/SphereField.java (limited to 'src/tesseract/generators') diff --git a/src/tesseract/generators/GeneratorsMenu.java b/src/tesseract/generators/GeneratorsMenu.java new file mode 100644 index 0000000..0256d8b --- /dev/null +++ b/src/tesseract/generators/GeneratorsMenu.java @@ -0,0 +1,29 @@ +package tesseract.generators; + +import javax.swing.JMenu; + +import tesseract.World; + +/** + * A generator menu. + * + * @author jesse + */ +public class GeneratorsMenu extends JMenu { + + /** + * Serial UID. + */ + private static final long serialVersionUID = 8994598391451363374L; + + /** + * Constructor. + */ + public GeneratorsMenu(final World theWorld) { + super("Generators"); + + // Build the menu of generators. + //add(new SphereField(theWorld)); + add(new ParticleField(theWorld)); + } +} diff --git a/src/tesseract/generators/MenuItem.java b/src/tesseract/generators/MenuItem.java new file mode 100644 index 0000000..2990cea --- /dev/null +++ b/src/tesseract/generators/MenuItem.java @@ -0,0 +1,38 @@ +package tesseract.generators; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JMenuItem; + +import tesseract.World; + +/** + * Parent class for generator menus. + * + * @author jesse + */ +public abstract class MenuItem extends JMenuItem { + + /** + * Serial UID. + */ + private static final long serialVersionUID = 5591914377175098868L; + + protected MenuItem(final String label, final World theWorld) { + super(label); + + addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + generate(theWorld); + } + }); + } + + /** + * Generate. + * + * @param World the world to put it in. + */ + public abstract void generate(final World theWorld); +} diff --git a/src/tesseract/generators/ParticleField.java b/src/tesseract/generators/ParticleField.java new file mode 100644 index 0000000..80e5e1d --- /dev/null +++ b/src/tesseract/generators/ParticleField.java @@ -0,0 +1,37 @@ +package tesseract.generators; + +import javax.vecmath.Vector3f; + +import tesseract.World; +import tesseract.objects.Particle; +import tesseract.objects.Sphere; + +/** + * Generate a field of random particles. + * + * @author jesse + */ +public class ParticleField extends MenuItem { + + private static final int FIELD_SIZE = 100; + + public ParticleField(World theWorld) { + super("Particle Field", theWorld); + } + + /** + * Generate the field. + * + * @param theWorld Where to put them + */ + public void generate(final World theWorld) { + for (int i = 0; i < FIELD_SIZE; i++) { + Vector3f position = new Vector3f((float) Math.random() - 0.5f, + (float) Math.random() - 0.5f, (float) Math.random() - 0.5f); + + Particle p = new Particle(position, null); + + theWorld.addObject(p); + } + } +} diff --git a/src/tesseract/generators/SphereField.java b/src/tesseract/generators/SphereField.java new file mode 100644 index 0000000..1bc57ae --- /dev/null +++ b/src/tesseract/generators/SphereField.java @@ -0,0 +1,43 @@ +package tesseract.generators; + +import javax.vecmath.Vector3f; + +import tesseract.World; +import tesseract.objects.PhysicalObject; +import tesseract.objects.Sphere; + +/** + * Generate a sphere field. + * + * @author jesse + */ +public class SphereField extends MenuItem { + + private static final int FIELD_SIZE = 4; + + private static final float SPHERE_SIZE = 0.15f; + + public SphereField(World theWorld) { + super("Sphere Field", theWorld); + } + + /** + * Generate the field. + * + * @param theWorld Where to put them + */ + public void generate(final World theWorld) { + final float start = 1.1f * 0.5f * FIELD_SIZE * SPHERE_SIZE; + + for (float x = -start; x <= +start; x += SPHERE_SIZE * 1.1f) { + for (float y = -start; y <= +start; y += SPHERE_SIZE * 1.1f) { + for (float z = -start; z <= +start; z += SPHERE_SIZE * 1.1f) { + PhysicalObject s = new Sphere(SPHERE_SIZE, new Vector3f(x, y, z)); + theWorld.addObject(s); + + } + } + + } + } +} -- cgit v1.2.3