simbad.sim
Class PhysicalEngine

java.lang.Object
  extended by simbad.sim.PhysicalEngine

public class PhysicalEngine
extends java.lang.Object

Centralize resources and algorithms related to physical interactions. Most of this is experimental for the time being.


Field Summary
private  javax.media.j3d.BoundingSphere bs1
           
private  javax.media.j3d.BoundingSphere bs2
           
(package private)  double epsilonContact
           
protected static float g
          gravitational acceleration constant in m/s**2
private  javax.vecmath.Point3d p1
           
private  javax.vecmath.Point3d p2
           
private  javax.vecmath.Point3d p3
           
private  javax.vecmath.Vector3d v1
           
private  javax.vecmath.Vector3d v2
           
private  javax.vecmath.Vector3d v3
           
private  javax.vecmath.Vector3d v4
           
private  javax.vecmath.Vector3d v5
           
 
Constructor Summary
PhysicalEngine()
           
 
Method Summary
protected  void checkAgentAgentPairs(double dt, java.util.ArrayList agents, boolean computeImpact, boolean checkCollision)
          Check all agents/agent pairs and verify physical interactions and/or collision.
protected  void checkAgentObjectPairs(java.util.ArrayList agents, java.util.ArrayList objects, boolean computeInteraction, boolean checkCollision)
          Check all agents/static objetc pairs and verify physical interactions and/or collision.
private  void computeAgentAgentImpact(SimpleAgent a1, SimpleAgent a2, javax.media.j3d.BoundingSphere bs1, javax.media.j3d.BoundingSphere bs2)
          experimental
private  void computeAgentObjectImpact(SimpleAgent a, StaticObject o, javax.media.j3d.BoundingSphere bsa)
          experimental
protected  void computeContactNormal(javax.media.j3d.BoundingSphere bs, javax.media.j3d.BoundingBox bb, javax.vecmath.Vector3d n)
           
protected  void computeForces(double dt, SimpleAgent a)
          Compute all external force contributions on an agent before any impact.
protected  boolean intersect(javax.media.j3d.BoundingSphere bs, javax.media.j3d.BoundingBox bb)
           
protected  boolean intersect(javax.media.j3d.BoundingSphere bs, StaticObject obj)
           
protected  double projNormal(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

g

protected static final float g
gravitational acceleration constant in m/s**2

See Also:
Constant Field Values

epsilonContact

double epsilonContact

bs1

private javax.media.j3d.BoundingSphere bs1

bs2

private javax.media.j3d.BoundingSphere bs2

v1

private javax.vecmath.Vector3d v1

v2

private javax.vecmath.Vector3d v2

v3

private javax.vecmath.Vector3d v3

v4

private javax.vecmath.Vector3d v4

v5

private javax.vecmath.Vector3d v5

p1

private javax.vecmath.Point3d p1

p2

private javax.vecmath.Point3d p2

p3

private javax.vecmath.Point3d p3
Constructor Detail

PhysicalEngine

PhysicalEngine()
Method Detail

computeForces

protected void computeForces(double dt,
                             SimpleAgent a)
Compute all external force contributions on an agent before any impact.

Parameters:
dt - virtual time elapsed since last call.

checkAgentAgentPairs

protected void checkAgentAgentPairs(double dt,
                                    java.util.ArrayList agents,
                                    boolean computeImpact,
                                    boolean checkCollision)
Check all agents/agent pairs and verify physical interactions and/or collision. Complexity is O(n^2).


checkAgentObjectPairs

protected void checkAgentObjectPairs(java.util.ArrayList agents,
                                     java.util.ArrayList objects,
                                     boolean computeInteraction,
                                     boolean checkCollision)
Check all agents/static objetc pairs and verify physical interactions and/or collision.


computeAgentAgentImpact

private void computeAgentAgentImpact(SimpleAgent a1,
                                     SimpleAgent a2,
                                     javax.media.j3d.BoundingSphere bs1,
                                     javax.media.j3d.BoundingSphere bs2)
experimental


computeAgentObjectImpact

private void computeAgentObjectImpact(SimpleAgent a,
                                      StaticObject o,
                                      javax.media.j3d.BoundingSphere bsa)
experimental


intersect

protected boolean intersect(javax.media.j3d.BoundingSphere bs,
                            StaticObject obj)

intersect

protected boolean intersect(javax.media.j3d.BoundingSphere bs,
                            javax.media.j3d.BoundingBox bb)

computeContactNormal

protected void computeContactNormal(javax.media.j3d.BoundingSphere bs,
                                    javax.media.j3d.BoundingBox bb,
                                    javax.vecmath.Vector3d n)

projNormal

protected double projNormal(double x1,
                            double y1,
                            double z1,
                            double x2,
                            double y2,
                            double z2,
                            double x3,
                            double y3,
                            double z3)