public class MechanikClient extends PhysikClient implements Ticker
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.Dieser wird ab sofort immer wieder informiert, solange das Ziel- Raum -Objekt unterhalb
der Toleranzgrenze liegt. |
void |
geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
Addiert eine Geschwindigkeit v' zur aktuellen Geschwindigkeit v.
|
void |
geschwindigkeitSetzen(Vektor geschwindigkeit)
Setzt hart die Geschwindigkeit des Client-Objekts.
|
float |
getElastizitaet() |
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.
|
void |
setElastizitaet(float elastizitaet)
Setzt die Elastizität für dieses Objekt neu.
|
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.Dieser wird ab sofort immer dann einmalig informiert, wenn das Ziel- Raum -Objekt nach
einem Sprung/Fall wieder auf einem Passiv-Objekt steht. |
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. |
static void |
tresholdSetzen(float threshold)
Setzt einen neuen Threshold d.
|
ziel
public static Manager MECH_TIMER
public MechanikClient(Raum ziel)
ziel
- das Ziel-Objekt für diesen Client.public static void tresholdSetzen(float threshold)
threshold
- Der Threshold d (in px), ab dem die Engine Geschwindigkeitsvektoren
auf 0 setzt.public static void setzeMeterProPixel(float meterpropixel)
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 tick()
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 boolean bewegen(Vektor v)
bewegen
in class PhysikClient
v
- Der die Bewegung beschreibende Vektor.true
, wenn die Bewegung in vollem Masse moeglich war, sonst
false
.public void aufloesen()
aufloesen
in class PhysikClient
@Deprecated public boolean sprung(int kraft)
sprung
in class PhysikClient
kraft
- Die Sprungkraft.true
.@Deprecated public void schwerkraftAktivSetzen(boolean aktiv)
PhysikClient
-Klassen wird
hierbei eine Fehlermeldung ausgegeben. Aktiviert / Deaktiviert eine Standardschwerkraft. Nur aus
Kompatibilitätsgründen vorhanden.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)
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)
FallReagierbar
-Listener angemeldet.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.PhysikClient.kritischeTiefeSetzen(int)
public void stehReagierbarAnmelden(StehReagierbar s)
StehReagierbar
-Listener angemeldet.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()
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)
schwerkraftSetzen
in class PhysikClient
schwerkraft
- Der Wert fuer die Schwerkraft der Physik.Raum.aktivMachen()
public void impulsHinzunehmen(Vektor impuls)
impulsHinzunehmen
in class PhysikClient
impuls
- der neue Impuls, der auf das Objekt wirken soll. (in [kg* (m / s)])public void geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
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 float getLuftwiderstandskoeffizient()
getLuftwiderstandskoeffizient
in class PhysikClient
public boolean istBeeinflussbar()
istBeeinflussbar
in class PhysikClient
public float getMasse()
getMasse
in class PhysikClient
public Vektor getForce()
getForce
in class PhysikClient
public float getElastizitaet()
public void setElastizitaet(float elastizitaet)
elastizitaet
- Die Elastizität dieses Objekts in %. 1 = Voller Energieerhalt
--- 0 = Voller Energieverlustpublic void luftwiderstandskoeffizientSetzen(float luftwiderstandskoeffizient)
luftwiderstandskoeffizientSetzen
in class PhysikClient
luftwiderstandskoeffizient
- Der Luftwiderstandskoeffizient. Darf nicht kleiner als 0 sein!public void beeinflussbarSetzen(boolean beeinflussbar)
beeinflussbarSetzen
in class PhysikClient
beeinflussbar
- ist dieser Wert true
, ist das Objekt ab sofort beeinflussbar. Sonst ist es
nicht beeinflussbar.public void masseSetzen(float masse)
masseSetzen
in class PhysikClient
masse
- die neue Masse des Client-Objekts.(in [kg])public void kraftSetzen(Vektor kraft)
kraftSetzen
in class PhysikClient
kraft
- Die neue Kraft, die auf das Client-Objekt wirken soll.(in [m / s^2] = [N])public void geschwindigkeitSetzen(Vektor geschwindigkeit)
geschwindigkeitSetzen
in class PhysikClient
geschwindigkeit
- Die neue Geschwindigkeit für das Client-Objekt. (in [m / s])public void einfluesseZuruecksetzen()
einfluesseZuruecksetzen
in class PhysikClient
public void kraftAnwenden(Vektor kraft, float t_kraftuebertrag)
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 KreisCollider collider()