gKit2 light
orbiter.h
Go to the documentation of this file.
1 
2 #ifndef _ORBITER_H
3 #define _ORBITER_H
4 
5 #include "vec.h"
6 #include "mat.h"
7 
8 
11 
14 
16 class Orbiter
17 {
18 public:
20  Orbiter( ) : m_center(), m_position(), m_rotation(), m_size(5.f), m_radius(5.f), m_width(1), m_height(1), m_fov(45) {}
21 
23  void lookat( const Point& center, const float size );
25  void lookat( const Point& pmin, const Point& pmax );
26 
28  Transform projection( const int width, const int height, const float fov );
30  float znear( ) const;
32  float zfar( ) const;
33 
35  void rotation( const float x, const float y );
37  void translation( const float x, const float y );
39  void move( const float z );
40 
42  Transform view( ) const;
44  Transform projection( ) const;
46  Transform viewport( ) const;
47 
81  void frame( const float z, Point& dO, Vector& dx, Vector& dy ) const;
82 
84  Point position( );
85 
87  int read_orbiter( const char *filename );
88 
90  int write_orbiter( const char *filename );
91 
93  float radius() const { return m_radius; }
94 
95 protected:
96  Point m_center;
97  vec2 m_position;
98  vec2 m_rotation;
99  float m_size;
100  float m_radius;
101 
102  float m_width;
103  float m_height;
104  float m_fov;
105 };
106 
108 #endif
representation de la camera, type orbiter, placee sur une sphere autour du centre de l'objet.
Definition: orbiter.h:17
void lookat(const Point &center, const float size)
observe le point center a une distance size.
Definition: orbiter.cpp:7
void frame(const float z, Point &dO, Vector &dx, Vector &dy) const
Definition: orbiter.cpp:89
Orbiter()
cree une camera par defaut. observe le centre (0, 0, 0) a une distance 5.
Definition: orbiter.h:20
int read_orbiter(const char *filename)
relit la position de l'orbiter depuis un fichier texte.
Definition: orbiter.cpp:116
Transform viewport() const
renvoie la transformation viewport actuelle. doit etre initialise par projection(width,...
Definition: orbiter.cpp:83
void move(const float z)
rapproche / eloigne la camera du centre.
Definition: orbiter.cpp:33
float radius() const
renvoie le rayon de la scene.
Definition: orbiter.h:93
float znear() const
renvoie le plan proche de la projection. distance min des points dans le frustum de la camera (valeur...
Definition: orbiter.cpp:56
void translation(const float x, const float y)
deplace le centre / le point observe.
Definition: orbiter.cpp:27
float zfar() const
revnvoie le plan loin de la projection. distance max des points dans le frustum de la camera (valeur ...
Definition: orbiter.cpp:63
void rotation(const float x, const float y)
change le point de vue / la direction d'observation.
Definition: orbiter.cpp:21
Transform projection() const
renvoie la transformation projection actuelle. doit etre initialise par projection(width,...
Definition: orbiter.cpp:71
Point position()
renvoie la position de la camera dans le repere du monde.
Definition: orbiter.cpp:108
int write_orbiter(const char *filename)
enregistre la position de l'orbiter dans un fichier texte.
Definition: orbiter.cpp:150
Transform view() const
renvoie la transformation vue.
Definition: orbiter.cpp:40
Point center(const Point &a, const Point &b)
renvoie le milieu du segment ab.
Definition: vec.cpp:24
representation d'un point 3d.
Definition: vec.h:21
representation d'une transformation, une matrice 4x4, organisee par ligne / row major.
Definition: mat.h:21
representation d'un vecteur 3d.
Definition: vec.h:59
vecteur generique, utilitaire.
Definition: vec.h:131