Plane.
More...
#include <Plane.h>
List of all members.
Public Types |
enum | PLANE_TYPE { INSIDE = 0,
OUTSIDE = 1,
INPLANE = 2
} |
Public Member Functions |
| Plane () |
| Konstruktor.
|
virtual | ~Plane () |
| Destruktor.
|
void | clear (void) |
| Initialisiert die Ebene.
|
void | set (Vec &v0, Vec &va, Vec &vb) |
| Setter fuer die Ebenenparameter: Definiert die Ebene ueber drei Punkte, die sich auf der Ebene befinden Die Punkte duerfen nicht alle auf einer Geraden liegen! Aus den Punkten wird der Normalenvektor berechnet, und normalisiert (Laenge 1) Ausserdem wird der Abstand zum Ursprung D berechnet. Der Normalenvektor zeigt in Richtung der Ebene. Es gilt: d = N * Q + D.
|
int | check (Vec &v0) |
| Testet, ob ein Punkt (Vektor) innerhalb, ausserhalb oder auf der Ebene liegt.
|
bool | intersect (Line &P, float *dist) |
| Liefert die Distanz der Linie zur Ebene.
|
float | getInterLength () |
| Liefert die Distanz zur Intersection zurueck.
|
void | dump (char *msg) |
| Dump-Methode fuer Debugzwecke.
|
Public Attributes |
Vec | m_N |
Vec | m_P |
float | m_D |
Private Attributes |
float | m_intersectLength |
Detailed Description
Member Enumeration Documentation
Constructor & Destructor Documentation
Plane::~Plane |
( |
| ) |
[virtual] |
Member Function Documentation
int Plane::check |
( |
Vec & |
v0 | ) |
|
Testet, ob ein Punkt (Vektor) innerhalb, ausserhalb oder auf der Ebene liegt.
- Parameters:
-
- Returns:
- OUTSIDE --> Der Punkt liegt ausserhalb der Ebene INSIDE --> Der Punkt liegt innerhalb der Ebene INPLANE --> Der Punkt liegt genau in der Ebene
void Plane::clear |
( |
void |
| ) |
|
void Plane::dump |
( |
char * |
msg | ) |
|
Dump-Methode fuer Debugzwecke.
- Parameters:
-
Reimplemented in Tile.
float Plane::getInterLength |
( |
| ) |
|
Liefert die Distanz zur Intersection zurueck.
- Returns:
- laenge
bool Plane::intersect |
( |
Line & |
P, |
|
|
float * |
dist |
|
) |
| |
Liefert die Distanz der Linie zur Ebene.
Damit ist die Laenge vom Startpunkt der Linie bis zur Ebene gemeint. Diese Laenge ist Normiert. Die Laenge einer Linie/Strahls ist normalerweise unendlich. Mann kann aber ein Polygonsegment (hier Tilesegment) in eine Linie mit einer festen Laenge umwandeln. Vergleicht mann die Laenge des Tilesegments mit der der Distanz t zur Plane weiss mann, ob das Tilesegment die Plane schneidet. Wichtig: um beide laengen vergleichen zu koennen, muss die Laenge der Tile- segments normiert werden. Es gilt: Wenn t < 0 dann liegt die Ebene 'hinter' dem Segment Wenn t > (normierte) Laenge des Segments, ist das Segment zu kurz, und schneidet die Ebene nicht. Nur wenn (0 <=t) && t < SegLen) schneidet die Linie die Ebene. Der Schnittpunkt selbst kann mit line.getEndPoint(t) ermittelt werden.
-(N * S + D) t = ------------ N * V
- Parameters:
-
- Returns:
- true->Schnittpunkt, false->kein Schnittpunkt, dist bleibt unveraendert (kann Double.NaN sein, wenn kein Schnittpunkt vorliegt)
void Plane::set |
( |
Vec & |
v0, |
|
|
Vec & |
va, |
|
|
Vec & |
vb |
|
) |
| |
Setter fuer die Ebenenparameter: Definiert die Ebene ueber drei Punkte, die sich auf der Ebene befinden Die Punkte duerfen nicht alle auf einer Geraden liegen! Aus den Punkten wird der Normalenvektor berechnet, und normalisiert (Laenge 1) Ausserdem wird der Abstand zum Ursprung D berechnet. Der Normalenvektor zeigt in Richtung der Ebene. Es gilt: d = N * Q + D.
va | | | |----------vb v0
- Parameters:
-
Member Data Documentation
The documentation for this class was generated from the following files:
- E:/project/engine3d/cplusplus/src/math3d/Plane.h
- E:/project/engine3d/cplusplus/src/math3d/Plane.cpp