cs5643.rigidbody
Class RigidBodySystem

java.lang.Object
  extended by cs5643.rigidbody.RigidBodySystem

public class RigidBodySystem
extends java.lang.Object

Maintains a dynamic list of RigidBody objects, and provides access to their state for numerical integration of dynamics and collision processing.


Field Summary
(package private)  java.util.HashSet<RigidBody> bodies
          List of RigidBody objects.
(package private)  CollisionProcessor collisionProcessor
           
(package private)  java.util.ArrayList<Force> F
          List of Force objects.
(package private)  boolean processCollisions
           
(package private)  double time
          Current simulation time.
 
Constructor Summary
RigidBodySystem()
          Basic constructor.
 
Method Summary
 void add(RigidBody rb)
          Adds the RigidBody to the system, and invalidates the existing CollisionProcessor.
 void addForce(Force f)
          Adds a force object (until removed)
 void advanceTime(double dt)
          Incomplete/Debugging integrator implementation.
 void display(javax.media.opengl.GL gl)
          Displays RigidBody and Force objects.
 int getNBodies()
          Number of rigid bodies.
 boolean getProcessCollisions()
          Returns true if collision processing is enabled, and false otherwise.
(package private)  java.util.Collection<RigidBody> getRigidBodies()
          Fragile reference to rigid bodies.
 void jiggle()
          Applies some random accelerations to the objects (modify as desired).
 RigidBody pickBody(javax.vecmath.Point2d p)
          Picks body based on some criteria, or null if none picked.
 void remove(RigidBody rb)
          Removes the RigidBody from the system, and invalidates the existing CollisionProcessor.
 void removeForce(Force f)
          Useful for removing temporary forces, such as user-interaction spring forces.
 void reset()
          Moves all rigidbodys to undeformed/materials positions, and sets all velocities to zero.
 void setProcessCollisions(boolean enable)
          Enables/disables collision processing.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

time

double time
Current simulation time.


bodies

java.util.HashSet<RigidBody> bodies
List of RigidBody objects.


F

java.util.ArrayList<Force> F
List of Force objects.


collisionProcessor

CollisionProcessor collisionProcessor

processCollisions

boolean processCollisions
Constructor Detail

RigidBodySystem

public RigidBodySystem()
Basic constructor.

Method Detail

addForce

public void addForce(Force f)
Adds a force object (until removed)


removeForce

public void removeForce(Force f)
Useful for removing temporary forces, such as user-interaction spring forces.


getRigidBodies

java.util.Collection<RigidBody> getRigidBodies()
Fragile reference to rigid bodies.


getNBodies

public int getNBodies()
Number of rigid bodies.


pickBody

public RigidBody pickBody(javax.vecmath.Point2d p)
Picks body based on some criteria, or null if none picked.


add

public void add(RigidBody rb)
Adds the RigidBody to the system, and invalidates the existing CollisionProcessor.


remove

public void remove(RigidBody rb)
Removes the RigidBody from the system, and invalidates the existing CollisionProcessor.


reset

public void reset()
Moves all rigidbodys to undeformed/materials positions, and sets all velocities to zero. Synchronized to avoid problems with simultaneous calls to advanceTime().


jiggle

public void jiggle()
Applies some random accelerations to the objects (modify as desired).


advanceTime

public void advanceTime(double dt)
Incomplete/Debugging integrator implementation. TODO: Modify this function to implement the integrator based on the velocity-level complementarity constraint solver.


setProcessCollisions

public void setProcessCollisions(boolean enable)
Enables/disables collision processing.


getProcessCollisions

public boolean getProcessCollisions()
Returns true if collision processing is enabled, and false otherwise.


display

public void display(javax.media.opengl.GL gl)
Displays RigidBody and Force objects.