physics
Class DynamicTransformGroup

java.lang.Object
  extended byjavax.media.j3d.SceneGraphObject
      extended byjavax.media.j3d.Node
          extended byjavax.media.j3d.Group
              extended byjavax.media.j3d.TransformGroup
                  extended byphysics.DynamicTransformGroup
Direct Known Subclasses:
DynamicCube, DynamicSphere

public class DynamicTransformGroup
extends javax.media.j3d.TransformGroup

Diese Klasse repräsentiert einen starren Körper. Dieser Körper ist definiert durch eine Masse, einen Trägheitsmoment, seine Geschwindigkeit, seine Transformation, einen Stoßfaktor und seine Ausdehnung.

Die Ausdehnung des Körpers wird durch die Objekte bestimmt, welche unter diese DynanimcTransformGroup eingefügt werden. Neben den bereits genannten Größen kann auch die Beschleunigung, die auf den Körper wirkt, gesetzt werden.

Der Stoßfaktor gibt an, wieviel kinetische Energie bei einem Stoß erhalten bleibt. Der Gesamtstoßfaktor fü den Stoß ergibt sich aus dem Produkt der Stoßfaktoren der beiden Körper. Ist dieses Produkt 1, handelt es sich um einen vollständig elastischen Stoß. Ist das Produkt 0 ist der Stoß vollständig inelastisch. Der Stoßfaktor kann zwischen 0 und 1 liegen.

Ein Körper kann schlafen gelegt werden, d.h. er wird nicht bewegt oder von sich aus auf Kollisionen gepr&ueft, bis ein anderer Körper mit ihm kollidiert oder er manuell aufgeweckt wird (siehe setSleep(boolean)).

Version:
1.0 (05/04/25)
Author:
Martin Hedler

Field Summary
 
Fields inherited from class javax.media.j3d.TransformGroup
ALLOW_TRANSFORM_READ, ALLOW_TRANSFORM_WRITE
 
Fields inherited from class javax.media.j3d.Group
ALLOW_CHILDREN_EXTEND, ALLOW_CHILDREN_READ, ALLOW_CHILDREN_WRITE, ALLOW_COLLISION_BOUNDS_READ, ALLOW_COLLISION_BOUNDS_WRITE
 
Fields inherited from class javax.media.j3d.Node
ALLOW_AUTO_COMPUTE_BOUNDS_READ, ALLOW_AUTO_COMPUTE_BOUNDS_WRITE, ALLOW_BOUNDS_READ, ALLOW_BOUNDS_WRITE, ALLOW_COLLIDABLE_READ, ALLOW_COLLIDABLE_WRITE, ALLOW_LOCAL_TO_VWORLD_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING
 
Constructor Summary
DynamicTransformGroup()
          Erstellt einen starren Körper, mit einer Masse von 1 kg und einem Trägheitsmoment von 0.4 kg * m^2 (Trägheitsmoment einer Kugel dieser Masse und einem Radius von einem Meter).
DynamicTransformGroup(javax.media.j3d.Transform3D trans)
          Erstellt einen starren Körper, mit einer Masse von 1 kg und einem Trägheitsmoment von 0.4 kg * m^2 (Trägheitsmoment einer Kugel dieser Masse und einem Radius von einem Meter).
DynamicTransformGroup(javax.media.j3d.Transform3D transform, float mass, float I, float energyPushFactor, javax.vecmath.Vector3f speed, javax.vecmath.Vector3f angleSpeed, javax.vecmath.Vector3f acceleration, javax.vecmath.Vector3f angleAcceleration, boolean sleeping)
          Erstellt einen starren Körper, mit den angegebenen Werten.
 
Method Summary
 javax.media.j3d.Node cloneNode(boolean arg0)
           
 void getAcceleration(javax.vecmath.Vector3f a)
          Gibt die Beschleunigung des Körpers zurück.
 void getAngleAcceleration(javax.vecmath.Vector3f a)
          Gibt die Winkelbeschleunigung des Körpers zurück.
 void getAngleForce(javax.vecmath.Vector3f f)
          Gibt den Drehmoment zurück, der auf den Körper wirkt.
 void getAngleSpeed(javax.vecmath.Vector3f aS)
          Gibt die aktuelle Winkelgeschwindigkeit des Körpers zurück.
 float getEnergyPushFactor()
          Liefert den Stoßfaktor zurück.
 float getI()
          Liefert den Dehmoment des Körpers zurück.
 void getLinearForce(javax.vecmath.Vector3f f)
          Gibt die Kraft zurück, die auf den Schwerpunkt des Körpers wirkt.
 float getMass()
          Liefert die Masse zurück.
 void getSpeed(javax.vecmath.Vector3f speed)
          Gibt die lineare Geschwindigkeit des Körpers zurück.
 boolean isSleep()
          Ermittelt den Simulationsstatus des Körpers.
 void nextStep(float deltaTime)
          Bewegt den Körper über der Zeit deltaTime auf einer ballistischen Bahn.
 void setAcceleration(javax.vecmath.Vector3f a)
          Setzt die Beschleunigung des Körpers in m / s^2.
 void setAngleAcceleration(javax.vecmath.Vector3f a)
          Setzt die Winkelbeschleunigung des Körpers in 1 / s^2.
 void setAngleForce(javax.vecmath.Vector3f f)
          Setzt den Drehmoment, der an den Körper angreift in N * m.
 void setAngleSpeed(javax.vecmath.Vector3f aS)
          Die Winkelgeschwindigkeit des Körpers in 1 / s.
 void setDeltaMomentum(javax.vecmath.Vector3f deltaP, javax.vecmath.Vector3f collisionRadius)
          Setzt die Impulsänderung des Körpers in kg * m / s.
 void setEnergyPushFactor(float value)
          Setzt den Stoßfaktor des Körpers.
 void setForce(javax.vecmath.Vector3f f, javax.vecmath.Vector3f radius)
          Setzt die Kraft (in N), welche auf den Körper an dem Punkt radius wirkt.
 void setI(float i)
          Setzt den Trägheitsmoment des Körpers in kg * m^2.
 void setLinearForce(javax.vecmath.Vector3f f)
          Setzt die Kraft (in N), welche direkt auf den Schwerpunkt des Körpers einwirkt.
 void setMass(float mass)
          Setzt die Masse des Körpers in kg.
 void setSleep(boolean s)
          Setzt den Simulationsstatus des Körpers.
 void setSpeed(javax.vecmath.Vector3f speed)
          Setzt die lineare Geschwindigkeit des Körpers in m / s.
 
Methods inherited from class javax.media.j3d.TransformGroup
getTransform, setTransform
 
Methods inherited from class javax.media.j3d.Group
addChild, getAllChildren, getAlternateCollisionTarget, getChild, getCollisionBounds, indexOfChild, insertChild, moveTo, numChildren, removeAllChildren, removeChild, removeChild, setAlternateCollisionTarget, setChild, setCollisionBounds
 
Methods inherited from class javax.media.j3d.Node
cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, duplicateNode, getBounds, getBoundsAutoCompute, getCollidable, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable
 
Methods inherited from class javax.media.j3d.SceneGraphObject
clearCapability, clearCapabilityIsFrequent, getCapability, getCapabilityIsFrequent, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setUserData, updateNodeReferences
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DynamicTransformGroup

public DynamicTransformGroup()
Erstellt einen starren Körper, mit einer Masse von 1 kg und einem Trägheitsmoment von 0.4 kg * m^2 (Trägheitsmoment einer Kugel dieser Masse und einem Radius von einem Meter). Der Stoßfaktor des Körpers ist 1. Die Geschwindigkeit und Beschleunigung des Körpers sind 0.


DynamicTransformGroup

public DynamicTransformGroup(javax.media.j3d.Transform3D transform,
                             float mass,
                             float I,
                             float energyPushFactor,
                             javax.vecmath.Vector3f speed,
                             javax.vecmath.Vector3f angleSpeed,
                             javax.vecmath.Vector3f acceleration,
                             javax.vecmath.Vector3f angleAcceleration,
                             boolean sleeping)
Erstellt einen starren Körper, mit den angegebenen Werten.

Parameters:
transform - Die Transformation des Körpers.
mass - Die Masse des Körpers in Kilogramm.
I - Der Trägheitsmoment in kg * m^2.
energyPushFactor - Wert zwischen 0 und 1 der angibt, wie elastisch sich ein Körper bei einem Stoß verhält.
speed - Lineare Startgeschwindigkeit des Körpers in m / s.
angleSpeed - Startwinkelgeschwindigkeit in 1 / s.
acceleration - Lineare Beschleunigung des Körpers in m / s^2.
angleAcceleration - Winkelbeschleunigung in 1 / s^2.
sleeping - true, wenn der Körper schlafen soll, sonst false.

DynamicTransformGroup

public DynamicTransformGroup(javax.media.j3d.Transform3D trans)
Erstellt einen starren Körper, mit einer Masse von 1 kg und einem Trägheitsmoment von 0.4 kg * m^2 (Trägheitsmoment einer Kugel dieser Masse und einem Radius von einem Meter). Der Stoßfaktor des Körpers ist 1. Die Geschwindigkeit und Beschleunigung des Körpers sind 0.

Parameters:
trans - Die Position und Orientierung des Körpers.
Method Detail

getEnergyPushFactor

public float getEnergyPushFactor()
Liefert den Stoßfaktor zurück.

Returns:
Der Stoßfaktor des Körpers.

setEnergyPushFactor

public void setEnergyPushFactor(float value)
                         throws java.lang.IllegalArgumentException
Setzt den Stoßfaktor des Körpers. Der Stoßfaktor gibt an, wieviel kinetische Energie bei einem Stoß erhalten bleibt. Der Gesamtstoßfaktor fü den Stoß ergibt sich aus dem Produkt der Stoßfaktoren der beiden Körper. Ist dieses Produkt 1, handelt es sich um einen vollständig elastischen Stoß. Ist das Produkt 0 ist der Stoß vollständig inelastisch. Der Stoßfaktor kann zwischen 0 und 1 liegen.

Parameters:
value - Faktor zwischen einschließlich 0 und 1.
Throws:
java.lang.IllegalArgumentException - Wenn der Wert nicht zwischen 0 und 1 liegt.

setLinearForce

public void setLinearForce(javax.vecmath.Vector3f f)
Setzt die Kraft (in N), welche direkt auf den Schwerpunkt des Körpers einwirkt.

Parameters:
f - Die einwirkende Kraft.

getLinearForce

public void getLinearForce(javax.vecmath.Vector3f f)
Gibt die Kraft zurück, die auf den Schwerpunkt des Körpers wirkt.

Parameters:
f - Vektor, in den die Kraft geschrieben wird.

setAngleForce

public void setAngleForce(javax.vecmath.Vector3f f)
Setzt den Drehmoment, der an den Körper angreift in N * m.

Parameters:
f - Der wirkende Drehmoment.

setAngleAcceleration

public void setAngleAcceleration(javax.vecmath.Vector3f a)
Setzt die Winkelbeschleunigung des Körpers in 1 / s^2.

Parameters:
a - Die Winkelbeschleunigung des Körpers.

getAngleAcceleration

public void getAngleAcceleration(javax.vecmath.Vector3f a)
Gibt die Winkelbeschleunigung des Körpers zurück.

Parameters:
a - Vektor, in den die Winkelbehschleunigung geschrieben wird.

getAngleForce

public void getAngleForce(javax.vecmath.Vector3f f)
Gibt den Drehmoment zurück, der auf den Körper wirkt.

Parameters:
f - Vektor, in den der einwirkende Drehmoment gespeichert wird.

setForce

public void setForce(javax.vecmath.Vector3f f,
                     javax.vecmath.Vector3f radius)
Setzt die Kraft (in N), welche auf den Körper an dem Punkt radius wirkt.

Parameters:
f - Die einwirkende Kraft.
radius - Position des Punktes, an dem die Kraft angreift.

isSleep

public boolean isSleep()
Ermittelt den Simulationsstatus des Körpers.

Returns:
true, wenn der Körper schläft, sonst false.

setSleep

public void setSleep(boolean s)
Setzt den Simulationsstatus des Körpers.

Parameters:
s - true, wenn sich der Körper nicht bewegen, also schlafen soll, sonst false.

setAngleSpeed

public void setAngleSpeed(javax.vecmath.Vector3f aS)
Die Winkelgeschwindigkeit des Körpers in 1 / s.

Parameters:
aS - Die Winkelgeschwindigkeit.

getAngleSpeed

public void getAngleSpeed(javax.vecmath.Vector3f aS)
Gibt die aktuelle Winkelgeschwindigkeit des Körpers zurück.

Parameters:
aS - Vektor, in den die Geschwindigkeit gespeichert wird.

setAcceleration

public void setAcceleration(javax.vecmath.Vector3f a)
Setzt die Beschleunigung des Körpers in m / s^2.

Parameters:
a - Die lineare Beschleunigung des Körpers.

getAcceleration

public void getAcceleration(javax.vecmath.Vector3f a)
Gibt die Beschleunigung des Körpers zurück.

Parameters:
a - Vektor in den die lineare Beschleunigung geschrieben wird.

nextStep

public void nextStep(float deltaTime)
Bewegt den Körper über der Zeit deltaTime auf einer ballistischen Bahn.

Parameters:
deltaTime - Der Zeitschritt, der die Dauer der Bewegung angibt.

getMass

public float getMass()
Liefert die Masse zurück.

Returns:
Die Masse des Körpers.

setMass

public void setMass(float mass)
Setzt die Masse des Körpers in kg.

Parameters:
mass - Die Masse.

getSpeed

public void getSpeed(javax.vecmath.Vector3f speed)
Gibt die lineare Geschwindigkeit des Körpers zurück.

Parameters:
speed - Vektor, in den die Geschwindigkeit geschrieben wird.

setSpeed

public void setSpeed(javax.vecmath.Vector3f speed)
Setzt die lineare Geschwindigkeit des Körpers in m / s.

Parameters:
speed - Die lineare Geschwindigkeit.

getI

public float getI()
Liefert den Dehmoment des Körpers zurück.

Returns:
Der Drehmoment.

setI

public void setI(float i)
Setzt den Trägheitsmoment des Körpers in kg * m^2.

Parameters:
i - Der Trägheitsmoment.

setDeltaMomentum

public void setDeltaMomentum(javax.vecmath.Vector3f deltaP,
                             javax.vecmath.Vector3f collisionRadius)
Setzt die Impulsänderung des Körpers in kg * m / s.

Parameters:
deltaP - Die Impulsänderung bzw. der Kraftstoß.
collisionRadius - Der Position, bei der der Kraftstoß angreift.

cloneNode

public javax.media.j3d.Node cloneNode(boolean arg0)