Particle​ Simulation Documentation
Loading...
Searching...
No Matches
camera.h
Go to the documentation of this file.
1#ifndef CAMERA_H
2#define CAMERA_H
3
4#include <glm/glm.hpp>
5#include <GL/glu.h>
6#include <GLFW/glfw3.h>
7
8#include "array.h"
9
10class Camera {
11public:
12 Camera(const glm::vec3& position = glm::vec3(0.0f, 0.0f, 0.0f),
13 const glm::vec3& front = glm::vec3(1.0f, 0.0f, 0.0f),
14 const glm::vec3& up = glm::vec3(0.0f, 1.0f, 0.0f),
15 float azimuth = 0.0f,
16 float elevation = 0.0f,
17 float speed = 50.0f,
18 float fov = 45.0f,
19 const float minRenderDistance = 1,
20 const float maxRenderDistance = 10000);
21
27 void configurePerspective(double aspectRatio);
28
29
30
34 void update();
35
42 void computeNewPosition(const std::array<bool, 1024>& keyStates, float deltaTime);
43
50 void computeNewOrientation(const double xOffset, const double yOffset);
51
52 // Setters
53 void setPosition(const glm::vec3& position);
54 void setSpeed(float speed);
55
56 // Getters
57 const glm::vec3& getPosition() const { return m_position; }
58 const glm::vec3& getFront() const { return m_front; }
59 const glm::vec3& getUp() const { return m_up; }
60 const float getSpeed() const { return m_speed; }
61
62private:
63
64 glm::vec3 m_position;
65 glm::vec3 m_front;
66 glm::vec3 m_up;
67 glm::vec3 m_right;
68
69 float m_azimuth;
71
72 float m_speed;
73 float m_fov;
74
75 const float m_minRenderDistance;
76 const float m_maxRenderDistance;
77};
78
79#endif // CAMERA_H
const glm::vec3 & getPosition() const
Definition camera.h:57
const glm::vec3 & getFront() const
Definition camera.h:58
const glm::vec3 & getUp() const
Definition camera.h:59
void update()
Updates the camera position and orientation.
Definition camera.cpp:30
float m_elevation
Elevation angle of the camera (in °).
Definition camera.h:70
glm::vec3 m_right
Normalized direction to the right of camera (in scene unit).
Definition camera.h:67
void setPosition(const glm::vec3 &position)
Definition camera.cpp:87
void computeNewPosition(const std::array< bool, 1024 > &keyStates, float deltaTime)
Compute new camera position.
Definition camera.cpp:41
float m_speed
Camera speed (in scene unit/sec).
Definition camera.h:72
const float m_minRenderDistance
Minimal rendering distance (in scene unit).
Definition camera.h:75
glm::vec3 m_front
Normalized direction towards which the camera is oriented (in scene unit).
Definition camera.h:65
float m_fov
Camera field of view (in °).
Definition camera.h:73
glm::vec3 m_position
Camera position (in scene unit).
Definition camera.h:64
void configurePerspective(double aspectRatio)
Configure camera perspective.
Definition camera.cpp:26
void computeNewOrientation(const double xOffset, const double yOffset)
Compute new camera orientation.
Definition camera.cpp:64
float m_azimuth
Azimut angle of the camera (in °).
Definition camera.h:69
void setSpeed(float speed)
Definition camera.cpp:91
Camera(const glm::vec3 &position=glm::vec3(0.0f, 0.0f, 0.0f), const glm::vec3 &front=glm::vec3(1.0f, 0.0f, 0.0f), const glm::vec3 &up=glm::vec3(0.0f, 1.0f, 0.0f), float azimuth=0.0f, float elevation=0.0f, float speed=50.0f, float fov=45.0f, const float minRenderDistance=1, const float maxRenderDistance=10000)
Definition camera.cpp:3
glm::vec3 m_up
Normalized direction to top of camera (in scene unit).
Definition camera.h:66
const float getSpeed() const
Definition camera.h:60
const float m_maxRenderDistance
Maximal rendering distance (in scene unit).
Definition camera.h:76