inlib  1.2.0
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions
inlib::sg::base_camera Class Reference
Inheritance diagram for inlib::sg::base_camera:
Inheritance graph
[legend]
Collaboration diagram for inlib::sg::base_camera:
Collaboration graph
[legend]

List of all members.

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_cameraoperator= (const base_camera &a_from)
bool operator== (const base_camera &a_from) const

Detailed Description

Definition at line 19 of file base_camera.


Constructor & Destructor Documentation

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.

  : node(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)
  {
#ifdef INLIB_MEM
    mem::increment(s_class().c_str());
#endif
    add_fields();
  }

Member Function Documentation

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]

Member Data Documentation

Definition at line 54 of file base_camera.

Definition at line 55 of file base_camera.

Definition at line 53 of file base_camera.

Definition at line 56 of file base_camera.

Definition at line 50 of file base_camera.

Definition at line 46 of file base_camera.

Definition at line 45 of file base_camera.

Definition at line 44 of file base_camera.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines