Back to bsyte

Plane Class Reference

Plane. More...

#include <Plane.h>

Inheritance diagram for Plane:
Collaboration diagram for Plane:

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

Enumerator:
INSIDE 
OUTSIDE 
INPLANE 

Constructor & Destructor Documentation

Plane::Plane ( )

Konstruktor.

Plane::~Plane ( ) [virtual]

Destruktor.


Member Function Documentation

int Plane::check ( Vec v0)

Testet, ob ein Punkt (Vektor) innerhalb, ausserhalb oder auf der Ebene liegt.

Parameters:
v0Der Punkt
Returns:
OUTSIDE --> Der Punkt liegt ausserhalb der Ebene INSIDE --> Der Punkt liegt innerhalb der Ebene INPLANE --> Der Punkt liegt genau in der Ebene

Here is the call graph for this function:

Here is the caller graph for this function:

void Plane::clear ( void  )

Initialisiert die Ebene.

Here is the call graph for this function:

Here is the caller graph for this function:

void Plane::dump ( char *  msg)

Dump-Methode fuer Debugzwecke.

Parameters:
msgText

Reimplemented in Tile.

Here is the caller graph for this function:

float Plane::getInterLength ( )

Liefert die Distanz zur Intersection zurueck.

Returns:
laenge

Here is the caller graph for this function:

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:
PLine
distDistanz
Returns:
true->Schnittpunkt, false->kein Schnittpunkt, dist bleibt unveraendert (kann Double.NaN sein, wenn kein Schnittpunkt vorliegt)

Here is the call graph for this function:

Here is the caller graph for this function:

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:
v0
va
vb

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

float Plane::m_D
float Plane::m_intersectLength [private]

The documentation for this class was generated from the following files: