# Plane Klassenreferenz

Plane. Mehr ...

`#include <Plane.h>`

Klassendiagramm für Plane:

Aufstellung aller Elemente

## Öffentliche Typen
enum | PLANE_TYPE { INSIDE = 0, OUTSIDE = 1, INPLANE = 2 }
## Öffentliche Methoden
| 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 | getInterLegth ()
| Liefert die Distanz zur Intersection zurueck.
void | dump (char *msg)
| Obligatorische Dumb-Methode fuer Debugzwecke.
## Öffentliche Attribute
Vec | m_N
Vec | m_P
float | m_D
## Private Attribute
float | m_intersectLength

## Ausführliche Beschreibung

Plane.

## Dokumentation der Aufzählungstypen

enum Plane::PLANE_TYPE

Aufzählungswerte:

  INSIDE |
  OUTSIDE |
  INPLANE |

## Beschreibung der Konstruktoren und Destruktoren

Plane::Plane | ( |  | ) |

Konstruktor.

Plane::~Plane | ( |  | ) | `[virtual]`

Destruktor.

## Dokumentation der Elementfunktionen

void Plane::clear | ( | void |  | ) |

Initialisiert die Ebene.

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

Parameter:

  | v0 |
  | va |
  | vb |

int Plane::check | ( | Vec & | v0 | ) |

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

Parameter:

  | v0 | Der Punkt

Rückgabe:
  OUTSIDE --> Der Punkt liegt ausserhalb der Ebene INSIDE --> Der Punkt liegt innerhalb der Ebene INPLANE --> Der Punkt liegt genau in der Ebene

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

Parameter:

  | P | Line
  | dist | Distanz

Rückgabe:
  true->Schnittpunkt, false->kein Schnittpunkt, dist bleibt unveraendert (kann Double.NaN sein, wenn kein Schnittpunkt vorliegt)

float Plane::getInterLegth | ( |  | ) |

Liefert die Distanz zur Intersection zurueck.

Rückgabe:
  laenge

void Plane::dump | ( | char * | msg | ) |

Obligatorische Dumb-Methode fuer Debugzwecke.

Parameter:

  | msg | Text

## Dokumentation der Datenelemente

Vec Plane::m_N

Vec Plane::m_P

float Plane::m_D

float Plane::m_intersectLength`[private]`

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:

- D:/Project/engine3d/cplusplus/src/math3d/Plane.h
- D:/Project/engine3d/cplusplus/src/math3d/Plane.cpp