Hauptseite | Liste aller Namensbereiche | Klassenhierarchie | Alphabetische Liste | Datenstrukturen | Auflistung der Dateien | Datenstruktur-Elemente | Datei-Elemente

Camera Klassenreferenz

#include <Camera.h>


Ausführliche Beschreibung

Diese Klasse ist die Kamera, die die Szene betrachet mit all ihren Einstellmoeglichkeiten

Definiert in Zeile 23 der Datei Camera.h.

Öffentliche Typen

enum  Action {
  NONE, ROTATEXY, ROTATEZ, FORWARD,
  MOVE, ROTATEKEEPPOSXY, ZOOM
}

Öffentliche Methoden

 Camera ()
void saveAktuallCameraPosition (int to)
void loadAktuallCameraPosition (int from)
int getScreenWidth ()
int getScreenHeight ()
void setScreen (int width, int height)
void rotateKeepViewPoint (int ix, int iy, int iz)
void rotateKeepPosition (int ix, int iy)
void saveCamera (ostream &FILE)
void loadCamera (istream &FILE)
void reloadAutomaticAdaption ()
void loadCameraMatrix ()
void loadCameraPerspective ()
void setAllToViewObject (Object *)
void home ()
void moveForward (double multiplier)
void move (double unten, double right)
void zoom (double multiplier)
void zoomTo (Vector &pos_, double distance_)
void changeLinearScaleFactor (double multiplier)
void setProjectionCenter (const Vector &pos_)
Vector getProjectionCenter ()
Vector getViewDirectionOrthogonal ()
void setPosition (const Vector &pos_)
void setUpper (const Vector &pos_)
Vector getUpper ()
Vector getPosition ()
double getProjectionDistance ()

Datenfelder

Action action

Statische öffentliche Attribute

const int CAMERA_SAVES = 10

Private Attribute

Vector place
Vector upper
Vector projectionCenter
cameraPos positionList [CAMERA_SAVES]
double aperture
int screenwidth
int screenheight


Dokumentation der Aufzählungstypen

enum Camera::Action
 

Moegliche Aktionen fuer die Kamera

Aufzählungswerte:
NONE 
ROTATEXY 
ROTATEZ 
FORWARD 
MOVE 
ROTATEKEEPPOSXY 
ZOOM 

Definiert in Zeile 92 der Datei Camera.h.


Beschreibung der Konstruktoren und Destruktoren

Camera::Camera  ) 
 

Konstruktor: setzt Standardwerte und setzt Camera in seine home-Position

Definiert in Zeile 52 der Datei Camera.cpp.

Benutzt CAMERA_SAVES, home() und saveAktuallCameraPosition().


Dokumentation der Elementfunktionen

void Camera::changeLinearScaleFactor double  multiplier  ) 
 

Ort und Projektionszentrum der Camera werden mit neuem linearen Skalierungsfaktor angepasst

Parameter:
multiplier neuer Multiplikator

Definiert in Zeile 236 der Datei Camera.cpp.

Benutzt reloadAutomaticAdaption().

Wird benutzt von Window::MenuOptionCallback().

Vector Camera::getPosition  )  [inline]
 

Rückgabe:
Position der Camera

Definiert in Zeile 229 der Datei Camera.h.

Wird benutzt von Window::HandleMouseMotion(), Window::MenuConstructionCallback() und Opengl::singleStep().

Vector Camera::getProjectionCenter  )  [inline]
 

Rückgabe:
aktuelles Projektionszentrum

Definiert in Zeile 189 der Datei Camera.h.

Wird benutzt von Window::MenuConstructionCallback() und Opengl::singleStep().

double Camera::getProjectionDistance  )  [inline]
 

Rückgabe:
Abstand zum Projektionszentrum zur Camera

Definiert in Zeile 236 der Datei Camera.h.

Wird benutzt von move(), moveForward() und reloadAutomaticAdaption().

int Camera::getScreenHeight  )  [inline]
 

Rückgabe:
screenheight

Definiert in Zeile 109 der Datei Camera.h.

Benutzt screenheight.

Wird benutzt von Window::HandleMouseMotion() und Opengl::init().

int Camera::getScreenWidth  )  [inline]
 

Rückgabe:
screenwidth

Definiert in Zeile 102 der Datei Camera.h.

Benutzt screenwidth.

Wird benutzt von Window::HandleMouseMotion() und Opengl::init().

Vector Camera::getUpper  )  [inline]
 

Rückgabe:
upper der Camera

Definiert in Zeile 222 der Datei Camera.h.

Wird benutzt von Window::HandleMouseMotion() und Opengl::singleStep().

Vector Camera::getViewDirectionOrthogonal  )  [inline]
 

Rückgabe:
orthogonalen Vektor auf die Blickrichtung

Definiert in Zeile 196 der Datei Camera.h.

Benutzt Vector::crossProduct() und Vector::normalise().

Wird benutzt von Window::HandleMouseMotion() und move().

void Camera::home  ) 
 

setze Camera auf die home-Position

Definiert in Zeile 367 der Datei Camera.cpp.

Benutzt aperture, Vector::normalise(), reloadAutomaticAdaption(), Vector::x, Vector::y und Vector::z.

Wird benutzt von Camera() und Window::HandleSpecialKeyboard().

void Camera::loadAktuallCameraPosition int  from  ) 
 

Laedt Cameraposition aus positionsList

Parameter:
from zu ladene Position in der positionsList

Definiert in Zeile 38 der Datei Camera.cpp.

Benutzt CAMERA_SAVES, Configuration::linearScaleFactor, ourConfiguration, Camera::cameraPos::place, positionList und reloadAutomaticAdaption().

Wird benutzt von Window::HandleSpecialKeyboard() und Window::MenuMainCallback().

void Camera::loadCamera istream &  FILE  ) 
 

Laedt alle Cameraeinstellungen aus FILE

Parameter:
&FILE Dateiname

Definiert in Zeile 79 der Datei Camera.cpp.

Benutzt aperture, CAMERA_SAVES, Message::msg(), Camera::cameraPos::place und positionList.

Wird benutzt von Configuration::loadWorld().

void Camera::loadCameraMatrix  )  [inline]
 

Setzt die Parameter der Kamera. Die Kamera wird im Punkt (0, 0, 10) platziert und schaut in Richtung des Ursprungs.

Definiert in Zeile 150 der Datei Camera.h.

Benutzt Vector::x, Vector::y und Vector::z.

Wird benutzt von Opengl::RenderObjects().

void Camera::loadCameraPerspective  )  [inline]
 

Definiert in Zeile 165 der Datei Camera.h.

Benutzt aperture, screenheight und screenwidth.

Wird benutzt von Opengl::getObjectID() und Opengl::RenderUniverse().

void Camera::move double  unten,
double  right
 

verschiebt die Camera nach oben/unten/links/rechts

Parameter:
unten Verschiebung nach unten/oben
right Verschiebung nach links/rechts

Definiert in Zeile 202 der Datei Camera.cpp.

Benutzt getProjectionDistance() und getViewDirectionOrthogonal().

Wird benutzt von Window::HandleMouseMotion(), Window::HandleSpecialKeyboard() und Window::MenuMainCallback().

void Camera::moveForward double  multiplier  ) 
 

Die Funktion aendert den Ort des Projektionszentrums in Richtung von viewDirection

Parameter:
multiplier Faktor der Positionsaenderung

Definiert in Zeile 189 der Datei Camera.cpp.

Benutzt getProjectionDistance() und Vector::normalise().

Wird benutzt von Window::HandleMouseMotion(), Window::HandleSpecialKeyboard() und Window::MenuMainCallback().

void Camera::reloadAutomaticAdaption  ) 
 

aktualisiert automatische Radiusadaption

Definiert in Zeile 157 der Datei Camera.cpp.

Benutzt Configuration::autoAdaption, getProjectionDistance(), Configuration::linearScaleFactor, ourConfiguration und Configuration::radiusAdaption.

Wird benutzt von changeLinearScaleFactor(), home(), loadAktuallCameraPosition(), Window::MenuOptionCallback(), zoom() und zoomTo().

void Camera::rotateKeepPosition int  ix,
int  iy
 

Rotiert die Camera in x und y Richtung unter Beibehaltung der Position

Parameter:
ix Drehung in x Richtung
iy Drehung in y Richtung

Definiert in Zeile 247 der Datei Camera.cpp.

Benutzt Vector::crossProduct(), Vector::length(), Vector::normalise(), PI, Vector::x, Vector::y und Vector::z.

Wird benutzt von Window::HandleMouseMotion() und Window::HandleSpecialKeyboard().

void Camera::rotateKeepViewPoint int  ix,
int  iy,
int  iz
 

ix, iy und iz sind Flags, die angeben, ob und wenn ja in welcher Orientierung um die zugehoerige Achse gedreht werden soll. Ist ein Flag 0, so wird nicht gedreht; ist es 1, wird in die eine Richtung gedreht, bei -1 in die andere. Entweder wird ein "Roll" (Drehung um den Blickrichtungsvektor, iz = 1 oder iz = -1) durchgefuehrt, oder eine Rotation (Drehung um die Vektoren der Aufrissebene, iz != 0). Die Aufrissebene wird dabei aufgespannt durch den Up-Vektor der Kamera und den Rechts-Vektor, welcher das (normalisierte) Kreuzprodukt aus Blickrichtung und Up-Vektor ist.

Definiert in Zeile 311 der Datei Camera.cpp.

Benutzt Vector::crossProduct(), Vector::normalise(), PI, Vector::x, Vector::y und Vector::z.

Wird benutzt von Window::HandleKeyboard(), Window::HandleMouseMotion(), Window::HandleSpecialKeyboard() und Window::MenuMainCallback().

void Camera::saveAktuallCameraPosition int  to  ) 
 

Speichert aktuelle Cameraposition in positionsList

Definiert in Zeile 23 der Datei Camera.cpp.

Benutzt CAMERA_SAVES, Configuration::linearScaleFactor, ourConfiguration, Camera::cameraPos::place, positionList, Camera::cameraPos::projectionCenter und Camera::cameraPos::upper.

Wird benutzt von Camera(), Window::HandleSpecialKeyboard() und Window::MenuMainCallback().

void Camera::saveCamera ostream &  FILE  ) 
 

Speichert Cameraeinstellungen und -positionsList in FILE

Parameter:
&FILE Dateiname

Definiert in Zeile 62 der Datei Camera.cpp.

Benutzt aperture, CAMERA_SAVES, Camera::cameraPos::place und positionList.

Wird benutzt von Configuration::saveWorld().

void Camera::setAllToViewObject Object obj  ) 
 

Diese Funktion sorgt dafuer, dass die Camera auf das Objekt obj schaut. Dabei muessen die Skalierungseffekte mit beruecksichtigt werden.

Parameter:
*obj Zeiger auf Objekt, auf das Camera schauen soll

Definiert in Zeile 132 der Datei Camera.cpp.

Benutzt Vector::crossProduct(), Object::getScaledPos(), Object::getScaledRadius(), Vector::length() und Vector::normalise().

Wird benutzt von Window::HandleSpecialKeyboard() und Window::MenuConstructionCallback().

void Camera::setPosition const Vector pos_  )  [inline]
 

aendert Position der Camera

Parameter:
%pos_ neue Cameraposition

Definiert in Zeile 206 der Datei Camera.h.

Wird benutzt von Opengl::singleStep().

void Camera::setProjectionCenter const Vector pos_  )  [inline]
 

aendert Projektionszentrum

Parameter:
&pos_ neues Projektionszentrum

Definiert in Zeile 182 der Datei Camera.h.

Wird benutzt von Window::HandleMouse(), Window::MenuMainCallback() und Opengl::singleStep().

void Camera::setScreen int  width,
int  height
[inline]
 

setzt screenwidth und screenheight

Parameter:
width screenwidth
height screenheight

Definiert in Zeile 118 der Datei Camera.h.

Benutzt screenheight und screenwidth.

Wird benutzt von Opengl::HandleReshape().

void Camera::setUpper const Vector pos_  )  [inline]
 

aendere upper der Camera

Parameter:
pos_ neues upper

Definiert in Zeile 214 der Datei Camera.h.

Benutzt Vector::normalise().

Wird benutzt von Opengl::singleStep().

void Camera::zoom double  multiplier  ) 
 

Diese Funktion aendert die Cameraposition in Richtung viewDirection

Parameter:
multiplier Faktor der Positionsaenderung

Definiert in Zeile 172 der Datei Camera.cpp.

Benutzt Configuration::clickedObject, Object::getScaledRadius(), Vector::length(), ourConfiguration und reloadAutomaticAdaption().

Wird benutzt von Window::HandleMouseMotion(), Window::HandleSpecialKeyboard() und Window::MenuMainCallback().

void Camera::zoomTo Vector pos_,
double  distance_
 

Aendert Cameraposition und Projektionszentrum unter Beibehaltung der viewDirection

Parameter:
pos_ Position des neuen Projektionszentrums
distance_ Entfernung der Camera vom Projektionszentrum

Definiert in Zeile 222 der Datei Camera.cpp.

Benutzt Vector::length() und reloadAutomaticAdaption().

Wird benutzt von Window::MenuMainCallback().


Dokumentation der Datenelemente

Action Camera::action
 

aktuell ausgewaehlte Aktion der Camera

Definiert in Zeile 97 der Datei Camera.h.

Wird benutzt von Window::HandleMouse() und Window::HandleMouseMotion().

double Camera::aperture [private]
 

Oeffnungswinkel

Definiert in Zeile 74 der Datei Camera.h.

Wird benutzt von home(), loadCamera(), loadCameraPerspective() und saveCamera().

const int Camera::CAMERA_SAVES = 10 [static]
 

max Anzahl an Positionen der Camera, die gespeichert werden sollen

Definiert in Zeile 28 der Datei Camera.h.

Wird benutzt von Camera(), loadAktuallCameraPosition(), loadCamera(), saveAktuallCameraPosition() und saveCamera().

Vector Camera::place [private]
 

Koodinaten des Standorts

Definiert in Zeile 54 der Datei Camera.h.

cameraPos Camera::positionList[CAMERA_SAVES] [private]
 

Liste fuer gespeicherte Camerapositionen

Definiert in Zeile 69 der Datei Camera.h.

Wird benutzt von loadAktuallCameraPosition(), loadCamera(), saveAktuallCameraPosition() und saveCamera().

Vector Camera::projectionCenter [private]
 

Projektionszentrum, Fluchtpunkt

Definiert in Zeile 64 der Datei Camera.h.

int Camera::screenheight [private]
 

Breite und Hoehe des Bildes

Definiert in Zeile 79 der Datei Camera.h.

Wird benutzt von getScreenHeight(), loadCameraPerspective() und setScreen().

int Camera::screenwidth [private]
 

Breite und Hoehe des Bildes

Definiert in Zeile 79 der Datei Camera.h.

Wird benutzt von getScreenWidth(), loadCameraPerspective() und setScreen().

Vector Camera::upper [private]
 

Vektor, der von der Camera aus nach oben zeigt

Definiert in Zeile 59 der Datei Camera.h.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
Erzeugt am Mon May 30 14:31:16 2005 für Sunsystembuildingandsimulation von doxygen 1.3.6