From fc40e7f6e3165a002326c92401c17951b7048a32 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Fri, 28 Jan 2011 18:52:51 +0000 Subject: And we now have a basic 3d world :D --- src/tesseract/forces/Force.java | 29 +++++++++++++++++++++++ src/tesseract/forces/Gravity.java | 49 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 src/tesseract/forces/Force.java create mode 100644 src/tesseract/forces/Gravity.java (limited to 'src/tesseract/forces') diff --git a/src/tesseract/forces/Force.java b/src/tesseract/forces/Force.java new file mode 100644 index 0000000..60498a1 --- /dev/null +++ b/src/tesseract/forces/Force.java @@ -0,0 +1,29 @@ +package tesseract.forces; + +import javax.vecmath.Vector3f; + +import tesseract.objects.Forceable; + +/** + * Abstract Force class. + * + * @author Jesse Morgan + */ +public abstract class Force { + + /** + * Calculate the force to apply to the give object. + * @param obj The given object. + * @return A vector describing the force. + */ + protected abstract Vector3f calculateForce(final Forceable obj); + + /** + * Apply this force to the given object. + * + * @param obj The given object. + */ + public void applyForceTo(final Forceable obj) { + obj.addForce(calculateForce(obj)); + } +} diff --git a/src/tesseract/forces/Gravity.java b/src/tesseract/forces/Gravity.java new file mode 100644 index 0000000..79e7f6a --- /dev/null +++ b/src/tesseract/forces/Gravity.java @@ -0,0 +1,49 @@ +package tesseract.forces; + +import javax.vecmath.Vector3f; + +import tesseract.objects.Forceable; + +/** + * Generic downward force class (aka Gravity). + * + * @author Jesse Morgan + */ +public class Gravity extends Force { + /** + * Default gravity force. + */ + private static final float DEFAULT_GRAVITY = 1f; + + /** + * The force used here. + */ + private float myGravity; + + /** + * Create a default gravity. + */ + public Gravity() { + myGravity = DEFAULT_GRAVITY; + } + + /** + * Create gravity with a custom strength. + * + * @param gravity The strength of gravity. + */ + public Gravity(final float gravity) { + myGravity = gravity; + } + + /** + * Calculate the force of gravity... + * + * @param obj The object the force is calculated for. + * @return A vector describing the force + */ + protected Vector3f calculateForce(final Forceable obj) { + return new Vector3f(0, -myGravity, 0); + } + +} -- cgit v1.2.3