public class MechanikClient extends PhysikClient implements Ticker
Ein Physik
-Client, der eine rudimentäre Implementierung Newton’scher Mechanik implementieren soll. Physik-Objekte, die von einem solchen Client betreut werden, zeichnen sich durch folgende Eigenschaften aus:
Modifier and Type | Field and Description |
---|---|
static Manager |
MECH_TIMER
Der Timer, der sich aller Mechanik-Clients annimmt.
|
ziel
Constructor and Description |
---|
MechanikClient(Raum ziel)
Konstruktor erstellt einen neuen Mechanik-Client.
|
Modifier and Type | Method and Description |
---|---|
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.
|
void |
beeinflussbarSetzen(boolean beeinflussbar)
Setzt, ob das Objekt ab sofort beeinflussbar sein soll.
|
boolean |
bewegen(Vektor v)
Bewegt das ziel-Objekt innerhalb der kuenstlichen Physik.
|
KreisCollider |
collider()
Gibt den Collider zurück.
|
void |
einfluesseZuruecksetzen()
Setzt alle Einfluesse auf das Client-Objekt zurück.
|
void |
fallReagierbarAnmelden(FallReagierbar f,
int tiefe)
In dieser Methode wird der
FallReagierbar -Listener angemeldet. |
void |
geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
Addiert eine Geschwindigkeit v’ zur aktuellen Geschwindigkeit v.
|
void |
geschwindigkeitSetzen(Vektor geschwindigkeit)
Setzt hart die Geschwindigkeit des Client-Objekts.
|
Vektor |
getForce() |
float |
getLuftwiderstandskoeffizient() |
float |
getMasse() |
Vektor |
getVelocity() |
void |
impulsHinzunehmen(Vektor impuls)
Berechnet einen neuen Impuls auf das Client-Objekt.
|
boolean |
istBeeinflussbar() |
void |
kraftAnwenden(Vektor kraft,
float t_kraftuebertrag)
Wendet eine Kraft für einen bestimmten Zeitraum auf das Client-Objekt an.
|
void |
kraftSetzen(Vektor kraft)
Setzt hart die konstante Kraft, die auf das Client-Objekt wirkt.
|
void |
kritischeTiefeSetzen(int tiefe)
Diese Methode setzt die kritische Tiefe eines Aktiv-Objektes.
|
void |
luftwiderstandskoeffizientSetzen(float luftwiderstandskoeffizient)
Setzt den Luftwiderstandskoeffizienten für das Client-Objekt.
|
void |
masseSetzen(float masse)
Setzt die Masse des Clien-Objekts neu.
|
void |
schwerkraftAktivSetzen(boolean aktiv)
Deprecated.
|
void |
schwerkraftSetzen(int schwerkraft)
Deprecated.
|
static void |
setzeMeterProPixel(float meterpropixel)
Setzt, wie viele Meter auf einen Pixel im Spielfenster gehen.
|
boolean |
sprung(int kraft)
Deprecated.
|
void |
stehReagierbarAnmelden(StehReagierbar s)
In dieser Methode wird der
StehReagierbar -Listener angemeldet. |
boolean |
steht()
Gibt an, ob das Ziel-
Raum -Objekt auf einem Passiv-Objekt steht oder nicht. |
void |
tick()
In der
tick() -Methode des Mechanik-Clients wird die diskrete Weiterrechnung der verschiedenen Parameter realisiert sowie die Anwendung der Geschwindigkeit auf die aktuelle Position des Client-Objekts. |
ziel
public static Manager MECH_TIMER
Der Timer, der sich aller Mechanik-Clients annimmt.
public MechanikClient(Raum ziel)
Konstruktor erstellt einen neuen Mechanik-Client.
ziel
- das Ziel-Objekt für diesen Client.public static void setzeMeterProPixel(float meterpropixel)
Setzt, wie viele Meter auf einen Pixel im Spielfenster gehen.
meterpropixel
- Die Anzahl an Metern, die auf einen Pixel fallen.10(.0f)
=> Auf einen Pixel fallen 10 Meter. => Ein Meter = 0,1 Pixel0.1f
=> Auf einen Pixel fallen 0,1 Meter. => Ein Meter = 10 Pixelpublic Vektor getVelocity()
public void einfluesseZuruecksetzen()
Setzt alle Einfluesse auf das Client-Objekt zurück. Dies sind:
einfluesseZuruecksetzen
in class PhysikClient
public 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.
geschwindigkeitSetzen
in class PhysikClient
geschwindigkeit
- Die neue Geschwindigkeit für das Client-Objekt. (in [m / s])public 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.
kraftSetzen
in class PhysikClient
kraft
- Die neue Kraft, die auf das Client-Objekt wirken soll.(in [m / s^2] = [N])public 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.
masseSetzen
in class PhysikClient
masse
- die neue Masse des Client-Objekts.(in [kg])public void beeinflussbarSetzen(boolean beeinflussbar)
Setzt, ob das Objekt ab sofort beeinflussbar sein soll.
Das bedeutet:
beeinflussbarSetzen
in class PhysikClient
beeinflussbar
- ist dieser Wert true
, ist das Objekt ab sofort beeinflussbar. Sonst ist es nicht beeinflussbar.public 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.
luftwiderstandskoeffizientSetzen
in class PhysikClient
luftwiderstandskoeffizient
- Der Luftwiderstandskoeffizient. Darf nicht kleiner als 0 sein!public Vektor getForce()
getForce
in class PhysikClient
public float getMasse()
getMasse
in class PhysikClient
public boolean istBeeinflussbar()
istBeeinflussbar
in class PhysikClient
public float getLuftwiderstandskoeffizient()
getLuftwiderstandskoeffizient
in class PhysikClient
public void geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
Addiert eine Geschwindigkeit v’ zur aktuellen Geschwindigkeit v. Die neue Geschwindigkeit des Client-Objekts ist damit:
v_neu = v + v’
geschwindigkeitHinzunehmen
in class PhysikClient
geschwindigkeit
- Die neue Geschwindigkeit v’, die zur aktuellen Geschwindigkeit v hinzuaddiert werden soll.(in [m / s])public void impulsHinzunehmen(Vektor impuls)
Berechnet einen neuen Impuls auf das Client-Objekt.
impulsHinzunehmen
in class PhysikClient
impuls
- der neue Impuls, der auf das Objekt wirken soll. (in [kg* (m / s)])public 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.
kraftAnwenden
in class PhysikClient
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)])public boolean bewegen(Vektor v)
Bewegt das ziel-Objekt innerhalb der kuenstlichen Physik.
bewegen
in class PhysikClient
v
- Der die Bewegung beschreibende Vektor.true
, wenn die Bewegung in vollem Masse moeglich war, sonst false
.public 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.
aufloesen
in class PhysikClient
@Deprecated public boolean sprung(int kraft)
Laesst das anliegende Objekt einen Sprung vollfuehren, wenn es ein Aktiv-Objekt ist. Sonst ist dieser Methodenaufruf wirkungslos.
Löst einen Impulssprung aus. Nur aus Kompatibilitätsgründen vorhanden.sprung
in class PhysikClient
kraft
- Die Sprungkraft.true
.@Deprecated public 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.
schwerkraftAktivSetzen
in class PhysikClient
aktiv
- Ist dieser Wert true
, so wird dieses Objekt von Schwerkraft beeinflusst. Ist er false
, dann nicht.public 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.
kritischeTiefeSetzen
in class PhysikClient
tiefe
- Die Tiefe, ab der das anliegende FallReagierbar
-Interface informiert werden soll.PhysikClient.fallReagierbarAnmelden(FallReagierbar, int)
public 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.
fallReagierbarAnmelden
in class PhysikClient
f
- Das FallReagierbar
-Objekt, das ab sofort im Grenzfall informiert wird.tiefe
- Die kritische Tiefe, ab der das Interface informiert wird.kritischeTiefeSetzen
public 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.
stehReagierbarAnmelden
in class PhysikClient
s
- Das StehReagierbar
-Objekt, das ab sofort immer einmalig informiert wird, wenn das Ziel-Objekt zum Stehen kommt.public boolean steht()
Gibt an, ob das Ziel-Raum
-Objekt auf einem Passiv-Objekt steht oder nicht.
steht
in class PhysikClient
true
, wenn das Ziel-Raum
-Objekt auf einem Passiv-Objekt steht, sonst false
.@Deprecated public 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…
schwerkraftSetzen
in class PhysikClient
schwerkraft
- Der Wert fuer die Schwerkraft der Physik.Raum.aktivMachen()
public void tick()
In der tick()
-Methode des Mechanik-Clients wird die diskrete Weiterrechnung der verschiedenen Parameter realisiert sowie die Anwendung der Geschwindigkeit auf die aktuelle Position des Client-Objekts. Dies ist vergleichbar mit der Methode der kleinen Schritte aus der Physik.
public KreisCollider collider()
Gibt den Collider zurück.