inlib
1.2.0
|
Public Member Functions | |
virtual void * | cast (const std::string &a_class) const |
virtual float | near_height () const =0 |
virtual void | zoom (float)=0 |
virtual | ~base_camera () |
void | rotate_camera_around_direction (float a_delta) |
void | rotate_camera_around_up (float a_delta) |
void | rotate_camera_around_y_at_focal (float a_delta) |
void | rotate_camera_around_x_at_focal (float a_delta) |
void | translate_camera_along_side (float a_delta) |
void | translate_camera_along_up (float a_delta) |
void | translate_camera_along_dir (float a_delta) |
void | dump (std::ostream &a_out) |
Static Public Member Functions | |
static const std::string & | s_class () |
Public Attributes | |
sf< float > | znear |
sf< float > | zfar |
sf_vec< inlib::vec3f, float > | position |
sf_rotf | orientation |
sf< float > | dx |
sf< float > | da |
sf< float > | ds |
sf< float > | focal |
Protected Member Functions | |
base_camera () | |
base_camera (const base_camera &a_from) | |
base_camera & | operator= (const base_camera &a_from) |
bool | operator== (const base_camera &a_from) const |
Definition at line 19 of file base_camera.
inlib::sg::base_camera::base_camera | ( | ) | [inline, protected] |
Definition at line 58 of file base_camera.
: node() ,znear(1) ,zfar(10) ,position(inlib::vec3f(0,0,1)) ,orientation(inlib::rotf(inlib::vec3f(0,0,1),0)) ,dx(0.01f) ,da(0.017f) //one degree. ,ds(0.99f) ,focal(0) { #ifdef INLIB_MEM mem::increment(s_class().c_str()); #endif add_fields(); }
virtual inlib::sg::base_camera::~base_camera | ( | ) | [inline, virtual] |
Definition at line 75 of file base_camera.
{ #ifdef INLIB_MEM mem::decrement(s_class().c_str()); #endif }
inlib::sg::base_camera::base_camera | ( | const base_camera & | a_from | ) | [inline, protected] |
Definition at line 81 of file base_camera.
virtual void* inlib::sg::base_camera::cast | ( | const std::string & | a_class | ) | const [inline, virtual] |
Reimplemented from inlib::sg::node.
Definition at line 36 of file base_camera.
{ if(void* p = inlib::cmp_cast<base_camera>(this,a_class)) {return p;} else return inlib::sg::node::cast(a_class); }
void inlib::sg::base_camera::dump | ( | std::ostream & | a_out | ) | [inline] |
Definition at line 180 of file base_camera.
{ a_out << " znear " << znear.value() << std::endl; a_out << " zfar " << zfar.value() << std::endl; inlib::vec3f& pos = position.value(); a_out << " pos " << pos[0] << " " << pos[1] << " " << pos[2] << std::endl; //FIXME : dump orientation. }
virtual float inlib::sg::base_camera::near_height | ( | ) | const [pure virtual] |
base_camera& inlib::sg::base_camera::operator= | ( | const base_camera & | a_from | ) | [inline, protected] |
Definition at line 97 of file base_camera.
{ node::operator=(a_from); znear = a_from.znear; zfar = a_from.zfar; position = a_from.position; orientation = a_from.orientation; dx = a_from.dx; da = a_from.da; ds = a_from.ds; focal = a_from.focal; return *this; }
bool inlib::sg::base_camera::operator== | ( | const base_camera & | a_from | ) | const [inline, protected] |
Definition at line 110 of file base_camera.
{ if(znear!=a_from.znear) return false; if(zfar!=a_from.zfar) return false; if(position!=a_from.position) return false; if(orientation!=a_from.orientation) return false; //we do not test dx,da,ds. return true; }
void inlib::sg::base_camera::rotate_camera_around_direction | ( | float | a_delta | ) | [inline] |
Definition at line 122 of file base_camera.
{ inlib::vec3f dir; orientation.value().mult_vec(inlib::vec3f(0,0,-1),dir); orientation.value(inlib::rotf(dir,a_delta) * orientation.value()); }
void inlib::sg::base_camera::rotate_camera_around_up | ( | float | a_delta | ) | [inline] |
Definition at line 127 of file base_camera.
{ inlib::vec3f up; orientation.value().mult_vec(inlib::vec3f(0,1,0),up); orientation.value(inlib::rotf(up,a_delta) * orientation.value()); }
void inlib::sg::base_camera::rotate_camera_around_x_at_focal | ( | float | a_delta | ) | [inline] |
Definition at line 144 of file base_camera.
{ //from coin SoGuiExaminerViewerP::rotXWheelMotion. inlib::vec3f dir; orientation.value().mult_vec(inlib::vec3f(0,0,-1),dir); inlib::vec3f focalpoint = position.value() + focal * dir; orientation.value (inlib::rotf(inlib::vec3f(1,0,0),a_delta) * orientation.value()); orientation.value().mult_vec(inlib::vec3f(0,0,-1),dir); position = focalpoint - focal * dir; }
void inlib::sg::base_camera::rotate_camera_around_y_at_focal | ( | float | a_delta | ) | [inline] |
Definition at line 133 of file base_camera.
{ //from coin SoGuiExaminerViewerP::rotYWheelMotion. inlib::vec3f dir; orientation.value().mult_vec(inlib::vec3f(0,0,-1),dir); inlib::vec3f focalpoint = position.value() + focal * dir; orientation.value (inlib::rotf(inlib::vec3f(0,1,0),a_delta) * orientation.value()); orientation.value().mult_vec(inlib::vec3f(0,0,-1),dir); position = focalpoint - focal * dir; }
static const std::string& inlib::sg::base_camera::s_class | ( | ) | [inline, static] |
Reimplemented from inlib::sg::node.
Definition at line 32 of file base_camera.
{ static const std::string s_v("inlib::sg::base_camera"); return s_v; }
void inlib::sg::base_camera::translate_camera_along_dir | ( | float | a_delta | ) | [inline] |
Definition at line 172 of file base_camera.
{ inlib::vec3f dir; orientation.value().mult_vec(inlib::vec3f(0,0,-1),dir); inlib::vec3f pos = position.value() + dir * a_delta; position.value(pos); }
void inlib::sg::base_camera::translate_camera_along_side | ( | float | a_delta | ) | [inline] |
Definition at line 155 of file base_camera.
{ inlib::vec3f dir; orientation.value().mult_vec(inlib::vec3f(0,0,-1),dir); inlib::vec3f up; orientation.value().mult_vec(inlib::vec3f(0,1,0),up); inlib::vec3f side = dir.cross(up); inlib::vec3f pos = position.value() + side * a_delta; position.value(pos); }
void inlib::sg::base_camera::translate_camera_along_up | ( | float | a_delta | ) | [inline] |
Definition at line 164 of file base_camera.
{ inlib::vec3f dir; orientation.value().mult_vec(inlib::vec3f(0,0,-1),dir); inlib::vec3f up; orientation.value().mult_vec(inlib::vec3f(0,1,0),up); inlib::vec3f pos = position.value() + up * a_delta; position.value(pos); }
virtual void inlib::sg::base_camera::zoom | ( | float | ) | [pure virtual] |
sf<float> inlib::sg::base_camera::da |
Definition at line 54 of file base_camera.
sf<float> inlib::sg::base_camera::ds |
Definition at line 55 of file base_camera.
sf<float> inlib::sg::base_camera::dx |
Definition at line 53 of file base_camera.
sf<float> inlib::sg::base_camera::focal |
Definition at line 56 of file base_camera.
Definition at line 50 of file base_camera.
Definition at line 46 of file base_camera.
sf<float> inlib::sg::base_camera::zfar |
Definition at line 45 of file base_camera.
sf<float> inlib::sg::base_camera::znear |
Definition at line 44 of file base_camera.