mirror of https://github.com/CGAL/cgal
84 lines
2.3 KiB
C++
84 lines
2.3 KiB
C++
///////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Class: CCamera //
|
|
// //
|
|
// Camera class to represent virtual cameras. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _CAMERA_
|
|
#define _CAMERA_
|
|
|
|
#include "Quaternion.h"
|
|
#include "Vector3d.h"
|
|
class CViewport;
|
|
|
|
class CCamera
|
|
{
|
|
|
|
private :
|
|
|
|
protected:
|
|
CVector3d position;
|
|
float radAngle;
|
|
CVector3d rotAxis;
|
|
float heightAngle;
|
|
float nearDistance;
|
|
float farDistance;
|
|
|
|
public :
|
|
|
|
// Constructor
|
|
CCamera() { }
|
|
CCamera(const CVector3d& p) { SetPosition(p); }
|
|
CCamera(CCamera& c) { Set(c); }
|
|
CCamera(CCamera *pC) { Set(pC); }
|
|
|
|
~CCamera() { }
|
|
|
|
// Data setting
|
|
void Set(CCamera& c);
|
|
void Set(CCamera *pC);
|
|
void SetPosition(const CVector3d& p)
|
|
{ position = p; }
|
|
void SetPosition(const float x, const float y, const float z)
|
|
{ position.Set(x,y,z); }
|
|
void SetOrientation(float ax, float ay, float az, float ra)
|
|
{ rotAxis.Set(ax,ay,az); radAngle = ra; }
|
|
void SetHeightAngle(const float ha)
|
|
{ heightAngle = ha; }
|
|
void SetNearDistance(const float nd)
|
|
{ nearDistance = nd; }
|
|
void SetFarDistance(const float fd)
|
|
{ farDistance = fd; }
|
|
|
|
// Data access
|
|
CVector3d GetPosition() const { return position; }
|
|
CVector3d GetOrientationAxis() const { return rotAxis; }
|
|
float GetOrientationAngle() const { return radAngle; }
|
|
float GetHeightAngle() const { return heightAngle; }
|
|
float GetNearDistance() const { return nearDistance; }
|
|
float GetFarDistance() const { return farDistance; }
|
|
|
|
// Coordinate Vectors
|
|
CVector3d GetRight();
|
|
CVector3d GetUp();
|
|
CVector3d GetToward();
|
|
|
|
// Ray Casting
|
|
CVector3d GetRayDirection(int x, int y, CViewport *vp);
|
|
|
|
// Viewing
|
|
void ViewAll(float xMin, float xMax,
|
|
float yMin, float yMax,
|
|
float zMin, float zMax,
|
|
CViewport *vp);
|
|
|
|
// OpenGL
|
|
void glDraw(CViewport *vp) const;
|
|
};
|
|
|
|
#endif // _CAMERA_
|
|
|
|
|