Ein Partikel

Werbung
THE MATHEMATICS
OF PARTICLES
&
THE LAWS OF MOTION
THE MATHEMATICS
OF PARTICLES
Vektoren & „Calculus“
- Definition
- „The handedness of space“
- Mathematik und Vektoren
------------------------------------ „differential calculus“
- „integral calculus“
Vektoren
----------------------------------
- Verschiedene Ansichten auf Vektoren: als einfache
Gleichungen (x=2y; y=2,3 => x=4,6), mal als Struktur mit
Skalaren zur Multiplikation, Addition und Subtraktion der
Werte.
- Im 2D und 3D dienen Vektoren als Abbildung von
Positionen in einem Raum. Und jede Position hat nur einen
beschreibenden Vektor.
- „handedness of space“
- 2 Wege zur Einrichtung eines Koordinaten-Systems:
- „left-handed way“ & „right-handed way“
- Es gibt kein einheitliches System dafür – Jeder Entwickler nimmt
eine andere Form – es spielt für den Code der Physik keine
Rolle.
- Vektoren können aber auch die Angaben einer Veränderung
der Position beschreiben:
class Vector3
{
// ... Other Vector3 code as before ...
/** Gets the magnitude of this vector. */
real magnitude() const
{
return real_sqrt(x*x+y*y+z*z);
}
/** Gets the squared magnitude of this vector. */
real squareMagnitude() const
{
return x*x+y*y+z*z;
}
/** Turns a non-zero vector into a vector of unit length. */
void normalize()
{
real l = magnitude();
if (l > 0)
{
(*this)*=((real)1)/l;
}
}
};
Skalar- und Vektor-Multiplikation
- Alle Komponente des Vektors werden mit dem Skalar
multipliziert:
class Vector3
{
// ... Other Vector3 code as before ...
/** Multiplies this vector by the given scalar. */
void operator*=(const real value)
{
x *= value;
y *= value;
z *= value;
}
/** Returns a copy of this vector scaled to the given value. */
Vector3 operator*(const real value) const
{
return Vector3(x*value, y*value, z*value);
}
};
Vektor Addition und Subtraktion
class Vector3
{
// ... Other Vector3 code as before ...
/** Adds the given vector to this. */
void operator+=(const Vector3& v)
{
x += v.x;
y += v.y;
z += v.z;
}
/**
* Returns the value of the given vector added to this.
*/
Vector3 operator+(const Vector3& v) const
{
return Vector3(x+v.x, y+v.y, z+v.z);
}
};
Komponenten-Produkt & Skalar-Produkt
- „KP“ ist nichts anderes als eine einfache Multiplikation von zwei
Vektoren, mit einem Vektor als Ergebnis:
- Beim „SP“ werden die Vektoren ebenfalls multipliziert, allerdings
wird das Ergebnis zu einem Skalar:
Vektor-Produkt
- auch genannt: Kreuz-Produkt, aufgrund der überkreuzenden
Berechnung:
- ist nicht kommutativ, d.h. a x b ungleich b x a. Bei den anderen
Operatoren wäre das Ergebnis trotz Tausches korrekt. Für ein
korrektes Ergebnis müsste man daraus folgendes machen:
a x b = -b x a
- geometrisch gesehen, ist das „VP“ sehr wichtig für die
Richtungsangaben, da jede Richtung orthogonal angegeben
wird.
Orthogonale Ebene
- für die Erstellung einer orthogonalen Ebene mit 3 gleichen
Vektoren, wollen wir diese Normalisieren.
„1. Find vector c by performing the cross product c = a × b.
2. If vector c has a zero magnitude, then give up: this means that a and b are parallel.
3. Now we need to make sure a and b are at right angles. We can do this by recalculating
b based on a, and c using the cross product: b = c × a (note the order).
4. Normalize each of the vectors to give the output:
a,
b, and
c.“
- Vektoren sind zu einander orthogonal, wenn ihr Skalar-Produkt 0 ergibt!
Calculus
------------------------------
Definition
- jede Form von mathematischen Systemen.
- in unserem Fall, spricht man von der Analysis:
=> „the study of functions that operate on real numbers“
- Veränderung über Zeit: Position des Objekts oder seine
Geschwindigkeit.
- 2 Wege zum Verstehen:
1. Beschreibung der Veränderung an sich.
2. Beschreibung des Ergebnis der Veränderung.
DIFFERENTIAL CALCULUS
- Für die Rate der Veränderung einer Position wird in der
Programmierung von dem Begriff „velocity“ gesprochen.
- Berechnung der „velocity“:
- Genauere Lösung indem die Lücke unendlich klein gemacht wird:
- Zur Vereinfachung:
Beschleunigung
- Neben der Geschwindigkeit besitzt das Objekt eine
Beschleunigung.
- Wenn p (Position) und v( „velocity“) gegeben sind, können wir
diese berechnen.
- Die Beschleunigung ist die Rate der Veränderung der
Geschwindigkeit eines Objekts.
- Formel:
„Vector Differential Calculus“
- bei Vektoren sieht die Bestimmung ähnlich aus.
- die vorangegangenen Formeln zur Bestimmung von
Geschwindigkeit und Beschleunigung, sind für 3D geeignet und
lassen sich so, auf jede einzelne Variable eines Vektors
anwenden:
Integral Calculus
- in physics engines wird die Integration dazu benutzt, Position und
die Geschwindigkeit zu aktualisieren.
- Formel:
p° = Geschwindigkeit am Anfang des Zeitintervals
p°° = Beschleunigung über die komplette Zeitspanne
- In der Mathematik werden die Formeln immer so umgestellt, das
man aus einer Formel für die Beschleunigung, eine Formel für
Geschwindigkeit erhält usw.
„Vector Integral Calculus“
- Berechnung auf Komponent-für-Komponent Basis:
THE LAWS OF MOTION
Partikel & Gesetze & Integrator
- Partikel
–
Definition
------------------------------------ „The first two laws“
- „Momentum, Gravity and Velocity“
------------------------------------
- Integration einzelner Werte
- Vollständige Integration
Ein Partikel
- hat eine Position, aber keine Ausrichtung.
Bsp.: Kugel = Uns ist egal in welcher Richtung sie zeigt,
wichtig ist, in welche Richtung sie sich bewegt.
- Für jedes Partikel wird eine ständige Aktualisierung von
verschiedenen Eigenschaften benötigt:
→ aktuelle Position, die Geschwindigkeit und die
Beschleunigung.
- Diese Werte sind alles Vektoren.
Physics engines basieren auf den Gesetzen der Bewegung von
Newton.
- Er entwickelte 3 Gesetze die sehr genau beschreiben, wie sich
„Partikel“ verhalten.
- Die ersten beiden lauten:
„1. An object continues with a constant velocity unless a force acts upon it.
2. A force acting on an object produces acceleration that is proportional to the object’s
mass.“
1. Gesetz
- erklärt uns, was geschieht, wenn keine Kräfte in der Umgebung
vorhanden sind.
- Ein Objekt, welches sich in einem Raum ohne Kräfte bewegt,
wird sich immer weiter mit einer konstanten Geschwindigkeit
bewegen, da keine Kräfte eine Verlangsamung oder einen Stop
bewirken könnten.
- in der realen Welt ginge dies nicht, in einer Engine allerdings
schon.
class Particle
{
// ... Other Particle code as before ...
/**
* Holds the amount of damping applied to linear
* motion. Damping is required to remove energy added
* through numerical instability in the integrator.
*/
real damping;
};
2. Gesetz
-
Ein Partikel
Ein Partikel
Ein Partikel
Herunterladen