#ifndef _CAMERA_HPP #define _CAMERA_HPP #include #include /// Třída Camera představuje kameru, neboli pohled pozorovatele. class Camera: public QMatrix4x4 { public: /// Konstruktor. /// Prázdný konstruktor. Camera(); /// Nastavení pozice kamery v prostoru. Vždy bude směrovat do středu. /// @param QVector3D position - pozice kamery v prostoru. void set(QVector3D position); /// Provede přiblížení kamery ke středu. void zoomIn(); /// Provede oddálení kamery od středu. void zoomOut(); /// Vrátí pozici kamery v prostoru /// @return pozice kamery v prostoru. QVector3D getPosition(); private: /// Atribut k určení spodní hranice délky vektoru (pozice kamery). static const int MIN_DIST; /// Atribut k určení horní hranice délky vektoru (pozice kamery). static const int MAX_DIST; /// Pozice kamery v prostoru. QVector3D position; /// Střed, vždy počátek soustavy souřadnic [0, 0, 0]. QVector3D center; /// @return vektor od středu do pozice kamery. QVector3D getVectorToPosition(); /// Nastaví jednotkovou matici. Vynásobí ji maticí pohledu, která je /// odvozena od bodu, ve kterém se nachází kamera, od směru pohledu a /// od směru nahoru od kamery (vždy [0, 1, 0]). void lookAt(); }; #endif