replaced Matrix44f to Matrix44<S>, added LookAt
This commit is contained in:
parent
b6d9d125da
commit
92f008a33d
|
@ -23,6 +23,9 @@
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
History
|
History
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.5 2004/10/22 14:29:40 ponchio
|
||||||
|
#include <...Point --> #include <...point
|
||||||
|
|
||||||
Revision 1.4 2004/10/07 14:41:31 fasano
|
Revision 1.4 2004/10/07 14:41:31 fasano
|
||||||
Little fix on ViewPoint() method
|
Little fix on ViewPoint() method
|
||||||
|
|
||||||
|
@ -47,11 +50,8 @@ creation
|
||||||
#ifndef __VCGLIB_SHOT
|
#ifndef __VCGLIB_SHOT
|
||||||
#define __VCGLIB_SHOT
|
#define __VCGLIB_SHOT
|
||||||
|
|
||||||
// #include <vector>
|
#include <vcg/space/Point2.h>
|
||||||
// #include <vcg/Matrix44.h>
|
#include <vcg/space/Point3.h>
|
||||||
// #include <vcg/Box3.h>
|
|
||||||
#include <vcg/space/point2.h>
|
|
||||||
#include <vcg/space/point3.h>
|
|
||||||
#include <vcg/math/similarity.h>
|
#include <vcg/math/similarity.h>
|
||||||
#include <vcg/math/camera.h>
|
#include <vcg/math/camera.h>
|
||||||
|
|
||||||
|
@ -71,9 +71,9 @@ public:
|
||||||
void SetValid(bool v){ if(!v) flags|=NOTVALID_BIT; else flags&=~NOTVALID_BIT;}
|
void SetValid(bool v){ if(!v) flags|=NOTVALID_BIT; else flags&=~NOTVALID_BIT;}
|
||||||
|
|
||||||
Camera<S> & camera; // the camera that shot
|
Camera<S> & camera; // the camera that shot
|
||||||
vcg::Similarity<S,vcg::Matrix44f> similarity; // the position from where it did it
|
vcg::Similarity<S,vcg::Matrix44<S> > similarity; // the position from where it did it
|
||||||
|
|
||||||
Shot( Camera<S> & c):camera(c){}
|
Shot( Camera<S> & c):camera(c){similarity.SetIdentity();}
|
||||||
|
|
||||||
Camera<S> & Camera(){return camera;};
|
Camera<S> & Camera(){return camera;};
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ public:
|
||||||
vcg::Point3<S> Axis(const int & i)const;
|
vcg::Point3<S> Axis(const int & i)const;
|
||||||
|
|
||||||
/// take the viewpoint
|
/// take the viewpoint
|
||||||
const vcg::Point3<S> ViewPoint();
|
const vcg::Point3<S> ViewPoint()const;
|
||||||
|
|
||||||
/// set the viewpoint
|
/// set the viewpoint
|
||||||
void SetViewPoint(const vcg::Point3<S> & viewpoint);
|
void SetViewPoint(const vcg::Point3<S> & viewpoint);
|
||||||
|
@ -89,7 +89,11 @@ public:
|
||||||
/// look at
|
/// look at
|
||||||
void LookAt(const vcg::Point3<S> & z_dir,const vcg::Point3<S> & up);
|
void LookAt(const vcg::Point3<S> & z_dir,const vcg::Point3<S> & up);
|
||||||
|
|
||||||
/// look at
|
/// look at (same as opengl)
|
||||||
|
void LookAt(const S & eye_x,const S & eye_y,const S & eye_z,const S & at_x,const S & at_y,const S & at_z,
|
||||||
|
const S & up_x,const S & up_y,const S & up_z);
|
||||||
|
|
||||||
|
/// look towards
|
||||||
void LookTowards(const vcg::Point3<S> & z_dir,const vcg::Point3<S> & up);
|
void LookTowards(const vcg::Point3<S> & z_dir,const vcg::Point3<S> & up);
|
||||||
|
|
||||||
/// convert a 3d point in camera coordinates
|
/// convert a 3d point in camera coordinates
|
||||||
|
@ -101,10 +105,11 @@ public:
|
||||||
/// take the distance from the point p and the plane parallel to the camera plane and passing through the view
|
/// take the distance from the point p and the plane parallel to the camera plane and passing through the view
|
||||||
/// point. The would be z depth
|
/// point. The would be z depth
|
||||||
S Depth(const vcg::Point3<S> & p)const;
|
S Depth(const vcg::Point3<S> & p)const;
|
||||||
|
|
||||||
}; // end class definition
|
}; // end class definition
|
||||||
|
|
||||||
template <class S>
|
template <class S>
|
||||||
const vcg::Point3<S> Shot<S>::ViewPoint(){
|
const vcg::Point3<S> Shot<S>::ViewPoint() const {
|
||||||
//Matrix44<S> m = similarity.Matrix();
|
//Matrix44<S> m = similarity.Matrix();
|
||||||
//return Point3<S>(m[0][3],m[1][3],m[2][3]);
|
//return Point3<S>(m[0][3],m[1][3],m[2][3]);
|
||||||
return -similarity.tra;
|
return -similarity.tra;
|
||||||
|
@ -128,6 +133,14 @@ void Shot<S>::LookAt(const vcg::Point3<S> & z_dir,const vcg::Point3<S> & up){
|
||||||
LookTowards(z_dir-ViewPoint(),up);
|
LookTowards(z_dir-ViewPoint(),up);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class S>
|
||||||
|
void Shot<S>::LookAt(const S & eye_x,const S & eye_y,const S & eye_z,const S & at_x,const S & at_y,const S & at_z,
|
||||||
|
const S & up_x,const S & up_y,const S & up_z){
|
||||||
|
SetViewPoint(Point3<S>(eye_x,eye_y,eye_z));
|
||||||
|
LookAt(Point3<S>(at_x,at_y,at_z),Point3<S>(up_x,up_y,up_z));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template <class S>
|
template <class S>
|
||||||
void Shot<S>::LookTowards(const vcg::Point3<S> & z_dir,const vcg::Point3<S> & up){
|
void Shot<S>::LookTowards(const vcg::Point3<S> & z_dir,const vcg::Point3<S> & up){
|
||||||
vcg::Point3<S> x_dir = up ^-z_dir ;
|
vcg::Point3<S> x_dir = up ^-z_dir ;
|
||||||
|
@ -135,9 +148,9 @@ void Shot<S>::LookTowards(const vcg::Point3<S> & z_dir,const vcg::Point3<S> & up
|
||||||
|
|
||||||
Matrix44<S> m;
|
Matrix44<S> m;
|
||||||
m.SetIdentity();
|
m.SetIdentity();
|
||||||
*(vcg::Point3<S> *)&m[0][0] = x_dir/x_dir.SquaredNorm();
|
*(vcg::Point3<S> *)&m[0][0] = x_dir/x_dir.Norm();
|
||||||
*(vcg::Point3<S> *)&m[1][0] = y_dir/y_dir.SquaredNorm();
|
*(vcg::Point3<S> *)&m[1][0] = y_dir/y_dir.Norm();
|
||||||
*(vcg::Point3<S> *)&m[2][0] = -z_dir/z_dir.SquaredNorm();
|
*(vcg::Point3<S> *)&m[2][0] = -z_dir/z_dir.Norm();
|
||||||
|
|
||||||
similarity.rot.FromMatrix(m);
|
similarity.rot.FromMatrix(m);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue