# Frustum Klassenreferenz

Das Frustum ist der Sichtpyramide mit (normalerweise) vier Seiten, an deren Spitze sich das Auge des Betrachters, bzw. die Camera befindet. Die Frustumspitze ist fest verankert in 0,0,0. Wenn also die Camera, bzw. der Spieler den Standort aendert, wird die Welt in das Frustum hineinbewegt. Das ist nicht optimal. Performanter waere es, das Frustum mit der Camera zu bewegen. Auf der anderen Seite vereinfacht es einige Algorithmen, wenn der Ursprung in 0,0,0 sitzt. Mehr ...

`#include <Frustum.h>`

Aufstellung aller Elemente

## Öffentliche Methoden
| Frustum ()
| Konstruktor.
| Frustum (int width, int height)
| Konstruktor.
void | init ()
| Initialisiert das Frustum.
void | set (Tile &tile)
| Erzeugt aus den Geraden einer geclippten Tile (typ Tile.PORTAL) die Planes.
float | getOriginDist ()
| Getter fuer die Distanz zum Ursprung.
void | clip (Tile &tile)
| Die Tile wird gegen das Frustum geclipped. Zuerst werden die orginal Vertices in die Clipp-Liste uebertragen. Anschliessend wird gegen alle Planes des Frustums geclippt, sodass zum Schluss das 'eingepasste' Polygon in der Clipp-Liste uebrig bleibt.
bool | inside (Tile &tile)
| Testet, ob eine Tile im Frustum liegt oder schneidet.
bool | inside (Partikel &partikel)
| Testet, ob ein Partikel im Frustum liegt.
void | dump ()
| Obligatorische Dump-Methode fuer Debugzwecke.
virtual | ~Frustum ()
| Destruktor.
## Öffentliche Attribute
int | NearPlaneHeight
int | NearPlaneWidth
int | NearFarDist
int | NearPlaneDist
int | FarPlaneDist
Vec | vEnd
Vec | Origin
Vec | OriginPlaneLR
Vec | OriginPlaneUR
Vec | OriginPlaneLL
Vec | OriginPlaneUL
Vec | PlaneDir
Vec | NearPlaneLR
Vec | NearPlaneUR
Vec | NearPlaneLL
Vec | NearPlaneUL
Vec | FarPlaneLR
Vec | FarPlaneUR
Vec | FarPlaneLL
Vec | FarPlaneUL
## Private Typen
enum | PLANE_SIDE { PLANE_TOP = 0, PLANE_RIGHT = 1, PLANE_BOTTOM = 2, PLANE_LEFT = 3 }
## Private Methoden
bool | inside (Vec &v)
| Testet, ob ein Punkt im Frustum Liegt.
bool | intersects (Line &line)
| Testet, ob eine Line das Frustum schneidet.
## Private Attribute
int | viewAngle
Vec | vOrigin
float | OriginDist
int | m_usedSidePlanes
Plane * | m_sidePlanes
Plane | OriginPlane
Plane | NearPlane
Plane | FarPlane
## Statische private Attribute
static int | SIDE_PLANES = 10

## Ausführliche Beschreibung

Das Frustum ist der Sichtpyramide mit (normalerweise) vier Seiten, an deren Spitze sich das Auge des Betrachters, bzw. die Camera befindet. Die Frustumspitze ist fest verankert in 0,0,0. Wenn also die Camera, bzw. der Spieler den Standort aendert, wird die Welt in das Frustum hineinbewegt. Das ist nicht optimal. Performanter waere es, das Frustum mit der Camera zu bewegen. Auf der anderen Seite vereinfacht es einige Algorithmen, wenn der Ursprung in 0,0,0 sitzt.

Bem.: Das Frustum der Camera hat vier Seiten, weil es den Sichtbereich des Betrachters gegen den Bildschirm abgrenzt. Wenn aber der Betrachter durch ein Portal schaut, koennen mehr als vier Frustumseiten existieren, weil das Portalfrustum voher gegen das Frustums des Betrachters geclipped wird.

## Dokumentation der Aufzählungstypen

enum Frustum::PLANE_SIDE`[private]`

Aufzählungswerte:

  PLANE_TOP |
  PLANE_RIGHT |
  PLANE_BOTTOM |
  PLANE_LEFT |

## Beschreibung der Konstruktoren und Destruktoren

Frustum::Frustum | ( |  | ) |

Konstruktor.

Frustum::Frustum | ( | int | width,
|  | int | height |
| ) |  |  |

Konstruktor.

Parameter:

  | width | Breite der Nearplane, bzw. des Bildschirmfensters
  | height | Hoehe der Nearplane, bzw. des Bildschirmfensters

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

Destruktor.

## Dokumentation der Elementfunktionen

void Frustum::init | ( |  | ) |

Initialisiert das Frustum.

void Frustum::set | ( | Tile & | tile | ) |

Erzeugt aus den Geraden einer geclippten Tile (typ Tile.PORTAL) die Planes.

Parameter:

  | tile | Referenz auf die Tile

float Frustum::getOriginDist | ( |  | ) |

Getter fuer die Distanz zum Ursprung.

Rückgabe:
  Distanz

void Frustum::clip | ( | Tile & | tile | ) |

Die Tile wird gegen das Frustum geclipped. Zuerst werden die orginal Vertices in die Clipp-Liste uebertragen. Anschliessend wird gegen alle Planes des Frustums geclippt, sodass zum Schluss das 'eingepasste' Polygon in der Clipp-Liste uebrig bleibt.

Parameter:

  | tile | Referenz auf die Tile

bool Frustum::inside | ( | Tile & | tile | ) |

Testet, ob eine Tile im Frustum liegt oder schneidet.

Parameter:

  | tile | Die Tile

Rückgabe:
  true-->Tile liegt innerhalb des Frustum, oder schneidet es false-->Tile liegt ausserhalb des Frustums

bool Frustum::inside | ( | Partikel & | partikel | ) |

Testet, ob ein Partikel im Frustum liegt.

Parameter:

  | partikel | Das Partikel

Rückgabe:
  true--> Partikel liegt innerhalb des Frustum false-->Partikel liegt ausserhalb des Frustums

void Frustum::dump | ( |  | ) |

Obligatorische Dump-Methode fuer Debugzwecke.

bool Frustum::inside | ( | Vec & | v | ) | `[private]`

Testet, ob ein Punkt im Frustum Liegt.

Parameter:

  | v | der Punkt

Rückgabe:
  true-->Punkt liegt innerhalb des Frustums false-->Punkt liegt ausserhalb des Frustums

bool Frustum::intersects | ( | Line & | line | ) | `[private]`

Testet, ob eine Line das Frustum schneidet.

Parameter:

  | line | Die Linie

Rückgabe:
  true Linie schneidet das Frustum false Kein Schnittpunkt

## Dokumentation der Datenelemente

int Frustum::viewAngle`[private]`

int Frustum::NearPlaneHeight

int Frustum::NearPlaneWidth

int Frustum::NearFarDist

int Frustum::NearPlaneDist

int Frustum::FarPlaneDist

Vec Frustum::vOrigin`[private]`

Vec Frustum::vEnd

Vec Frustum::Origin

float Frustum::OriginDist`[private]`

Vec Frustum::OriginPlaneLR

Vec Frustum::OriginPlaneUR

Vec Frustum::OriginPlaneLL

Vec Frustum::OriginPlaneUL

Vec Frustum::PlaneDir

Vec Frustum::NearPlaneLR

Vec Frustum::NearPlaneUR

Vec Frustum::NearPlaneLL

Vec Frustum::NearPlaneUL

Vec Frustum::FarPlaneLR

Vec Frustum::FarPlaneUR

Vec Frustum::FarPlaneLL

Vec Frustum::FarPlaneUL

int Frustum::m_usedSidePlanes`[private]`

int Frustum::SIDE_PLANES = 10`[static, private]`

Plane* Frustum::m_sidePlanes`[private]`

Plane Frustum::OriginPlane`[private]`

Plane Frustum::NearPlane`[private]`

Plane Frustum::FarPlane`[private]`

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

- D:/Project/engine3d/cplusplus/src/engine/Frustum.h
- D:/Project/engine3d/cplusplus/src/engine/Frustum.cpp