SpaghettiVis
Implementation of 2009 Everts et al. Depth-Dependent Halos: Illustrative Rendering of Dense Line Data
camera.h
1 #pragma once
2 
3 #include <glm/glm.hpp>
4 
5 #define M_PI 3.14159265358979323846
6 
7 
9 
12 class Camera
13 {
14 public:
15 
16  Camera();
17 
18  ~Camera(void);
19 
20  void reset();
21 
22  void buildViewMatrix(void);
23 
24  void buildProjectionMatrix(void);
25 
26  void zoom(float t);
27 
28  void rotateAzimuth(float t);
29 
30  void rotatePolar(float t);
31 
32  void moveLeft(float t);
33 
34  void moveRight(float t);
35 
36  void moveForwards(float t);
37 
38  void moveBackwards(float t);
39 
40  void moveUp(float t);
41 
42  void moveDown(float t);
43 
44  void rotateUp(float t);
45 
46  void rotateDown(float t);
47 
48  void rotateLeft(float t);
49 
50  void rotateRight(float t);
51 
52  void setOrthogonalBorders(float left, float right, float top, float bottom);
53 
54  glm::vec3 getUp() { return mUp; };
55 
56  glm::vec3 getRight() {
57  glm::vec4 a = glm::inverse(mViewMatrix)[0];
58  return glm::vec3(a);
59  };
60 
61  glm::vec3 getTarget() { return mTarget; };
62 
63  glm::vec3 getPosition() { return mPos; };
64 
65  bool isOrthogonal() { return mOrthogonal; };
66 
67  float getFieldOfView() { return mFieldOfView; };
68 
69  void setOrthogonal(bool orthogonal) { mOrthogonal = orthogonal; };
70 
71  void setUp(glm::vec3 &up) { mUp = up; };
72 
73  void setTarget(glm::vec3 &target) { mTarget = target; };
74 
75  void setFieldOfView(float fieldOfView) { mFieldOfView = fieldOfView; };
76 
77  void setNearPlane(float nearPlane) { mNear = nearPlane; };
78 
79  void setFarPlane(float farPlane) { mFar = farPlane; buildProjectionMatrix(); };
80 
81  float getNearPlane() { return mNear; };
82 
83  float getFarPlane() { return mFar; };
84 
85  void setAspect(float aspect) { mAspect = aspect; buildProjectionMatrix();};
86 
87  const glm::mat4 & getViewMatrix() { return mViewMatrix; };
88 
89  const glm::mat4 & getProjectionMatrix() { return mProjectionMatrix; };
90 
91 
92 private:
93  glm::mat4 mViewMatrix;
94  glm::mat4 mProjectionMatrix;
95 
96  float mRadius;
97  float mAzimuth;
98  float mPolar;
99 
100  glm::vec3 mUp;
101  glm::vec3 mTarget;
102  glm::vec3 mPos;
103  float mFieldOfView;
104  float mAspect;
105  float mNear;
106  float mFar;
107  float mLeft;
108  float mRight;
109  float mTop;
110  float mBottom;
111  bool mOrthogonal;
112 };
Camera class.
Definition: camera.h:12