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) {}
22  Orbiter( const Point& center, const float size ) : m_center(center), m_position(), m_rotation(), m_size(size), m_radius(size) {}
24  Orbiter( const Point& pmin, const Point& pmax ) : m_center(center(pmin, pmax)), m_position(), m_rotation(), m_size(distance(pmin, pmax)) {}
25 
27  void lookat( const Point& center, const float size );
29  void lookat( const Point& pmin, const Point& pmax );
30 
32  void rotation( const float x, const float y );
34  void translation( const float x, const float y );
36  void move( const float z );
37 
39  Transform view( ) const;
40 
42  Transform projection( const float width, const float height, const float fov ) const;
43 
74  void frame( const float width, const float height, const float z, const float fov, Point& dO, Vector& dx, Vector& dy ) const;
75 
77  Point position( );
78 
80  int read_orbiter( const char *filename );
81 
83  int write_orbiter( const char *filename );
84 
85 protected:
86  Point m_center;
87  vec2 m_position;
88  vec2 m_rotation;
89  float m_size;
90  float m_radius;
91 };
92 
94 #endif
representation de la camera, type orbiter, placee sur une sphere autour du centre de l'objet...
Definition: orbiter.h:16
vecteur generique, utilitaire.
Definition: vec.h:94
void move(const float z)
rapproche / eloigne la camera du centre.
Definition: orbiter.cpp:33
Orbiter()
cree une camera par defaut. observe le centre (0, 0, 0) a une distance 5.
Definition: orbiter.h:20
Transform view() const
renvoie la transformation vue.
Definition: orbiter.cpp:40
representation d'un vecteur 3d.
Definition: vec.h:42
int read_orbiter(const char *filename)
relit la position de l'orbiter depuis un fichier texte.
Definition: orbiter.cpp:86
Point position()
renvoie la position de la camera dans le repere du monde.
Definition: orbiter.cpp:78
Transform projection(const float width, const float height, const float fov) const
renvoie la projection reglee pour une image d'aspect width / height, et une ouverture de fov degres...
Definition: orbiter.cpp:47
void lookat(const Point &center, const float size)
observe le point center a une distance size.
Definition: orbiter.cpp:7
void translation(const float x, const float y)
deplace le centre / le point observe.
Definition: orbiter.cpp:27
Orbiter(const Point &center, const float size)
cree une camera. observe le point center a une distance size.
Definition: orbiter.h:22
Orbiter(const Point &pmin, const Point &pmax)
cree une camera. observe une boite alignee sur les axes.
Definition: orbiter.h:24
void rotation(const float x, const float y)
change le point de vue / la direction d'observation.
Definition: orbiter.cpp:21
representation d'une transformation, une matrice 4x4, organisee par ligne / row major.
Definition: mat.h:20
float distance(const Point &a, const Point &b)
renvoie la distance etre 2 points.
Definition: vec.cpp:7
representation d'un point 3d.
Definition: vec.h:19
void frame(const float width, const float height, const float z, const float fov, Point &dO, Vector &dx, Vector &dy) const
Definition: orbiter.cpp:59
int write_orbiter(const char *filename)
enregistre la position de l'orbiter dans un fichier texte.
Definition: orbiter.cpp:117
Point center(const Point &a, const Point &b)
renvoie le milieu du segment ab.
Definition: vec.cpp:17