public abstract class PhysikClient
extends java.lang.Object
Ein Physik-Client ueberwacht ganz generell ein Raum-Objekt in der Physik.
Es ist die Ausgangsklasse fuer Gravitatoren und Passivatoren - aber auch fuer die NullClient-Klasse. Diese ist die Standart-Physikklasse fuer nicht an der Physik beteiligte, neutrale Objekte.
Modifier and Type | Field and Description |
---|---|
protected Raum |
ziel
Das Raum-Objekt, das ueberwacht wird
|
Modifier | Constructor and Description |
---|---|
protected |
PhysikClient(Raum ziel)
Konstruktor.
|
Modifier and Type | Method and Description |
---|---|
abstract void |
aufloesen()
Diese Methode wird immer dann aufgerufen, wenn ein Client nicht weiter benoetigt wird, und er alle seine Funktionen beenden soll, um die von ihm belegten Ressourcen freizugeben.
|
abstract void |
beeinflussbarSetzen(boolean beeinflussbar)
Setzt, ob das Objekt ab sofort beeinflussbar sein soll.
|
abstract boolean |
bewegen(Vektor v)
Bewegt das ziel-Objekt innerhalb der kuenstlichen Physik.
|
abstract void |
einfluesseZuruecksetzen()
Setzt alle Einfluesse auf das Client-Objekt zurück.
|
abstract void |
fallReagierbarAnmelden(FallReagierbar f,
int tiefe)
In dieser Methode wird der
FallReagierbar -Listener angemeldet. |
abstract void |
geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
Addiert eine Geschwindigkeit v’ zur aktuellen Geschwindigkeit v.
|
abstract void |
geschwindigkeitSetzen(Vektor geschwindigkeit)
Setzt hart die Geschwindigkeit des Client-Objekts.
|
abstract Vektor |
getForce() |
abstract float |
getLuftwiderstandskoeffizient() |
abstract float |
getMasse() |
abstract void |
impulsHinzunehmen(Vektor impuls)
Berechnet einen neuen Impuls auf das Client-Objekt.
|
abstract boolean |
istBeeinflussbar() |
abstract void |
kraftAnwenden(Vektor kraft,
float t_kraftuebertrag)
Wendet eine Kraft für einen bestimmten Zeitraum auf das Client-Objekt an.
|
abstract void |
kraftSetzen(Vektor kraft)
Setzt hart die konstante Kraft, die auf das Client-Objekt wirkt.
|
abstract void |
kritischeTiefeSetzen(int tiefe)
Diese Methode setzt die kritische Tiefe eines Aktiv-Objektes.
|
abstract void |
luftwiderstandskoeffizientSetzen(float luftwiderstandskoeffizient)
Setzt den Luftwiderstandskoeffizienten für das Client-Objekt.
|
abstract void |
masseSetzen(float masse)
Setzt die Masse des Clien-Objekts neu.
|
abstract void |
schwerkraftAktivSetzen(boolean aktiv)
Setzt, ob das Ziel-Objekt von Schwerkraft beeinflusst wird.
|
abstract void |
schwerkraftSetzen(int schwerkraft)
Setzt die Schwerkraft fuer dieses Objekt.
|
abstract boolean |
sprung(int kraft)
Laesst das anliegende Objekt einen Sprung vollfuehren, wenn es ein Aktiv-Objekt ist.
|
abstract void |
stehReagierbarAnmelden(StehReagierbar s)
In dieser Methode wird der
StehReagierbar -Listener angemeldet. |
abstract boolean |
steht()
Gibt an, ob das Ziel-
Raum -Objekt auf einem Passiv-Objekt steht oder nicht. |
Raum |
ziel()
Gibt das Ziel-Objekt aus.
|
protected final Raum ziel
Das Raum-Objekt, das ueberwacht wird
protected PhysikClient(Raum ziel)
Konstruktor.
ziel
- Das zu ueberwachende Zielpublic abstract boolean bewegen(Vektor v)
Bewegt das ziel-Objekt innerhalb der kuenstlichen Physik.
v
- Der die Bewegung beschreibende Vektor.true
, wenn die Bewegung in vollem Masse moeglich war, sonst false
.public abstract void aufloesen()
Diese Methode wird immer dann aufgerufen, wenn ein Client nicht weiter benoetigt wird, und er alle seine Funktionen beenden soll, um die von ihm belegten Ressourcen freizugeben.
public abstract boolean sprung(int kraft)
Laesst das anliegende Objekt einen Sprung vollfuehren, wenn es ein Aktiv-Objekt ist. Sonst ist dieser Methodenaufruf wirkungslos.
kraft
- Die Sprungkraft.true
, wenn erfolgreich gesprungen wurde. In allen anderen Faellen false
.public abstract void schwerkraftAktivSetzen(boolean aktiv)
Setzt, ob das Ziel-Objekt von Schwerkraft beeinflusst wird.
Der Aufruf dieser Methode ist nur bei Gravitatoren sinnvoll. Bei allen anderen PhysikClient
-Klassen wird hierbei eine Fehlermeldung ausgegeben.
aktiv
- Ist dieser Wert true
, so wird dieses Objekt von Schwerkraft beeinflusst. Ist er false
, dann nicht.public abstract void kritischeTiefeSetzen(int tiefe)
Diese Methode setzt die kritische Tiefe eines Aktiv-Objektes. Ab dieser wird das entsprechende FallReagierbar
-Inteface, das angemeldet wurde, ueber den Fall informiert.
tiefe
- Die Tiefe, ab der das anliegende FallReagierbar
-Interface informiert werden soll.fallReagierbarAnmelden(FallReagierbar, int)
public abstract void fallReagierbarAnmelden(FallReagierbar f, int tiefe)
In dieser Methode wird der FallReagierbar
-Listener angemeldet.
Dieser wird ab sofort immer wieder informiert, solange das Ziel-Raum
-Objekt unterhalb der Toleranzgrenze liegt.
f
- Das FallReagierbar
-Objekt, das ab sofort im Grenzfall informiert wird.tiefe
- Die kritische Tiefe, ab der das Interface informiert wird.kritischeTiefeSetzen
public abstract void stehReagierbarAnmelden(StehReagierbar s)
In dieser Methode wird der StehReagierbar
-Listener angemeldet.
Dieser wird ab sofort immer dann einmalig informiert, wenn das Ziel-Raum
-Objekt nach einem Sprung/Fall wieder auf einem Passiv-Objekt steht.
s
- Das StehReagierbar
-Objekt, das ab sofort immer einmalig informiert wird, wenn das Ziel-Objekt zum Stehen kommt.public abstract boolean steht()
Gibt an, ob das Ziel-Raum
-Objekt auf einem Passiv-Objekt steht oder nicht.
true
, wenn das Ziel-Raum
-Objekt auf einem Passiv-Objekt steht, sonst false
.public Raum ziel()
Gibt das Ziel-Objekt aus.
public abstract void schwerkraftSetzen(int schwerkraft)
Setzt die Schwerkraft fuer dieses Objekt.
Achtung: Standardwert: 4
Groesserer Wert = langsamer Fallen
Kleinerer Wert = schneller Fallen
Negativer Wert : Moege Gott uns allen gnaedig sein…
schwerkraft
- Der Wert fuer die Schwerkraft der Physik.Raum.aktivMachen()
public abstract void impulsHinzunehmen(Vektor impuls)
Berechnet einen neuen Impuls auf das Client-Objekt.
impuls
- der neue Impuls, der auf das Objekt wirken soll. (in [kg* (m / s)])public abstract void geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
Addiert eine Geschwindigkeit v’ zur aktuellen Geschwindigkeit v. Die neue Geschwindigkeit des Client-Objekts ist damit:
v_neu = v + v’
geschwindigkeit
- Die neue Geschwindigkeit v’, die zur aktuellen Geschwindigkeit v hinzuaddiert werden soll.(in [m / s])public abstract float getLuftwiderstandskoeffizient()
public abstract boolean istBeeinflussbar()
public abstract float getMasse()
public abstract Vektor getForce()
public abstract void luftwiderstandskoeffizientSetzen(float luftwiderstandskoeffizient)
Setzt den Luftwiderstandskoeffizienten für das Client-Objekt. Dieser bestimmt, wie intensiv der Luftwiderstand das Objekt beeinträchtigt. Je höher dieser Wert ist, desto stärker ist der Luftwiderstand. Ist er 0, gibt es keinen Luftwiderstand.
luftwiderstandskoeffizient
- Der Luftwiderstandskoeffizient. Darf nicht kleiner als 0 sein!public abstract void beeinflussbarSetzen(boolean beeinflussbar)
Setzt, ob das Objekt ab sofort beeinflussbar sein soll.
Das bedeutet:
beeinflussbar
- ist dieser Wert true
, ist das Objekt ab sofort beeinflussbar. Sonst ist es nicht beeinflussbar.public abstract void masseSetzen(float masse)
Setzt die Masse des Clien-Objekts neu. Das kann auch mitten im Spiel geändert werden. Die Masse bestimmt zum Beispiel, wie sich das Objekt bei Kollisionen oder einem neuen Impuls verhält.
masse
- die neue Masse des Client-Objekts.(in [kg])public abstract void kraftSetzen(Vektor kraft)
Setzt hart die konstante Kraft, die auf das Client-Objekt wirkt. Das bedeutet, dass die vorher gegoltene Kraft gelöscht wird ohne Rücksicht auf mögliche Implikationen/Probleme.
kraft
- Die neue Kraft, die auf das Client-Objekt wirken soll.(in [m / s^2] = [N])public abstract void geschwindigkeitSetzen(Vektor geschwindigkeit)
Setzt hart die Geschwindigkeit des Client-Objekts. Das bedeutet, dass die vorher gegoltene Geschwindikeit gelöscht wird ohne Rücksicht auf mögliche Implikationen/Probleme.
geschwindigkeit
- Die neue Geschwindigkeit für das Client-Objekt. (in [m / s])public abstract void einfluesseZuruecksetzen()
Setzt alle Einfluesse auf das Client-Objekt zurück. Dies sind:
public abstract void kraftAnwenden(Vektor kraft, float t_kraftuebertrag)
Wendet eine Kraft für einen bestimmten Zeitraum auf das Client-Objekt an. Hierdurch entsteht ein neuer Impuls auf das Objekt, der dessen Geschwindigkeit (und Richtung) ändern kann.
Wichtig: Dies ist eine Heuristik: Die Dauer sein genügend klein und die Kraft konstant, solange sie wirkt. Die rein physikalische Rechnung wäre wesentlich rechenintensiver.
kraft
- Die Kraft, die auf das Objekt anliegen soll. (in [kg* (m / s^2)] = [N])t_kraftuebertrag
- Die Dauer, für die die Kraft auf das Objekt wirkt. (in [s)])