Back to bsyte

Frustum Class Reference

Das Frustum beschreibt typischerweise den Sichtbereich der Kamera. Es ist als Pyramidenstumpf mit vier Seiten, der Nearplane (Deckfläche) und der Farplane(Grundfläche). Die Kamera befindet sich an der Pyramidenspitze. Die Nearplane repräsentiert die Bildschirmflächen, während die Farplane den Sichtbereich in der Ferne begrenzt. More...

#include <Frustum.h>

Collaboration diagram for Frustum:

List of all members.

Public Member Functions

 Frustum ()
 Konstruktor.
 Frustum (int width, int height)
 Konstruktor.
void init ()
 Initialisiert das Frustum.
void set (Tile &tile)
 Baut ein Frustum (hier fuer das Portal-Clipping)
void set (Vec &origin, Tile &tile)
 Baut ein Frustum (hier fuer die Lightmap-Culling)
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 inside2 (Tile &tile)
 Testet, ob eine Tile im Frustum liegt oder schneidet.
bool inside (Partikel &partikel)
 Testet, ob ein Partikel im Frustum liegt.
bool inside (Vec &v)
 Testet, ob ein Punkt im Frustum Liegt.
void dump ()
 Obligatorische Dump-Methode fuer Debugzwecke.
virtual ~Frustum ()
 Destruktor.

Public Attributes

int NearPlaneHeight
int NearPlaneWidth
int NearFarDist
int NearPlaneDist
int FarPlaneDist
Vec vEnd
Vec Origin

Private Types

enum  PLANE_SIDE { PLANE_TOP = 0, PLANE_RIGHT = 1, PLANE_BOTTOM = 2, PLANE_LEFT = 3 }

Private Member Functions

bool intersects (Line &line)
 Testet, ob eine Line das Frustum schneidet.

Private Attributes

int viewAngle
Vec vOrigin
float OriginDist
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
int m_usedSidePlanes
Planem_sidePlanes
Plane OriginPlane
Plane NearPlane
Plane FarPlane

Static Private Attributes

static int SIDE_PLANES = 10

Detailed Description

Das Frustum beschreibt typischerweise den Sichtbereich der Kamera. Es ist als Pyramidenstumpf mit vier Seiten, der Nearplane (Deckfläche) und der Farplane(Grundfläche). Die Kamera befindet sich an der Pyramidenspitze. Die Nearplane repräsentiert die Bildschirmflächen, während die Farplane den Sichtbereich in der Ferne begrenzt.

Das Frustum wird nicht analog zur Cameraposition bewegt. Es ist mit der Frustumspitze fest im Ursprung (0,0,0) verankert und zeigt in z-Richtung. Stattdessen werden alle Objekte im 3D-Raum transformiert. Das hat Vorteile bei der Projektion und hebt die (Performanz-)Nachteile beim transformieren aller Weltobjekte wieder auf.

Bem.: Das Frustum wird auch als Portalfrustum und beim erzeugen der Lightmaps verwendet. Dort kann es potentiell 3..n Seitenflächen besitzen.


Member Enumeration Documentation

enum Frustum::PLANE_SIDE [private]
Enumerator:
PLANE_TOP 
PLANE_RIGHT 
PLANE_BOTTOM 
PLANE_LEFT 

Constructor & Destructor Documentation

Frustum::Frustum ( )

Konstruktor.

Here is the call graph for this function:

Frustum::Frustum ( int  width,
int  height 
)

Konstruktor.

Parameters:
widthBreite der Nearplane, bzw. des Bildschirmfensters
heightHoehe der Nearplane, bzw. des Bildschirmfensters

Here is the call graph for this function:

Frustum::~Frustum ( ) [virtual]

Destruktor.


Member Function Documentation

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.

Parameters:
tileReferenz auf die Tile

Here is the call graph for this function:

Here is the caller graph for this function:

void Frustum::dump ( )

Obligatorische Dump-Methode fuer Debugzwecke.

Here is the call graph for this function:

float Frustum::getOriginDist ( )

Getter fuer die Distanz zum Ursprung.

Returns:
Distanz
void Frustum::init ( )

Initialisiert das Frustum.

Here is the call graph for this function:

Here is the caller graph for this function:

bool Frustum::inside ( Vec v)

Testet, ob ein Punkt im Frustum Liegt.

Parameters:
vder Punkt
Returns:
true-->Punkt liegt innerhalb des Frustums false-->Punkt liegt ausserhalb des Frustums

Here is the call graph for this function:

bool Frustum::inside ( Partikel partikel)

Testet, ob ein Partikel im Frustum liegt.

Parameters:
partikelDas Partikel
Returns:
true--> Partikel liegt innerhalb des Frustum false-->Partikel liegt ausserhalb des Frustums

Here is the call graph for this function:

bool Frustum::inside ( Tile tile)

Testet, ob eine Tile im Frustum liegt oder schneidet.

Parameters:
tileDie Tile
Returns:
true-->Tile liegt innerhalb des Frustum, oder schneidet es false-->Tile liegt ausserhalb des Frustums

Here is the call graph for this function:

Here is the caller graph for this function:

bool Frustum::inside2 ( Tile tile)

Testet, ob eine Tile im Frustum liegt oder schneidet.

Parameters:
tileDie Tile
Returns:
true-->Tile liegt innerhalb des Frustum, oder schneidet es false-->Tile liegt ausserhalb des Frustums

Here is the call graph for this function:

Here is the caller graph for this function:

bool Frustum::intersects ( Line line) [private]

Testet, ob eine Line das Frustum schneidet.

Parameters:
lineDie Linie
Returns:
true Linie schneidet das Frustum false Kein Schnittpunkt

Here is the call graph for this function:

Here is the caller graph for this function:

void Frustum::set ( Vec origin,
Tile tile 
)

Baut ein Frustum (hier fuer die Lightmap-Culling)

Parameters:
originUrsprung, Koordinate der Frustumspitze
tileGeometrie fuer die FarPlane aus der die SeitenPlanes entstehen

Here is the call graph for this function:

void Frustum::set ( Tile tile)

Baut ein Frustum (hier fuer das Portal-Clipping)

Parameters:
tileGeometrie aus der die SeitenPlanes entstehen

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

float Frustum::OriginDist [private]
int Frustum::SIDE_PLANES = 10 [static, private]
int Frustum::viewAngle [private]
Vec Frustum::vOrigin [private]

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