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
Planem_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]

Vec Frustum::vOrigin [private]

float Frustum::OriginDist [private]

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


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

Generated on Sun Nov 1 16:26:43 2009 for engine3d by doxygen 1.5.5