|
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.
1.7.5.1