39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
|
#ifndef CAMERA_H_
|
||
|
#define CAMERA_H_
|
||
|
|
||
|
#define GLM_ENABLE_EXPERIMENTAL
|
||
|
#include <glm/glm.hpp>
|
||
|
#include <glm/gtc/matrix_transform.hpp>
|
||
|
#include <glm/gtx/transform.hpp>
|
||
|
#include <glm/gtc/type_ptr.hpp>
|
||
|
|
||
|
#include "transform.h"
|
||
|
|
||
|
struct Camera {
|
||
|
Transform transform;
|
||
|
float focalLength; // In mm
|
||
|
float sensorHeight;
|
||
|
float nearPlane;
|
||
|
float farPlane;
|
||
|
};
|
||
|
|
||
|
namespace CameraControls {
|
||
|
void TranslateCamera(Camera& camera, const glm::vec3& translationDelta);
|
||
|
void RotateCamera(Camera& camera, const glm::vec3& rotationDelta);
|
||
|
|
||
|
void SetPosition(Camera& camera, const glm::vec3& position);
|
||
|
void SetRotation(Camera& camera, const glm::vec3& rotation);
|
||
|
|
||
|
glm::vec3 GetPosition(Camera& camera);
|
||
|
glm::vec3 GetCenter(Camera& camera);
|
||
|
float GetFOV(Camera& camera);
|
||
|
|
||
|
void AdjustFocalLength(Camera& camera, float focalLength);
|
||
|
void AdjustSensorHeight(Camera& camera, float sensorHeight);
|
||
|
void AdjustNearPlane(Camera& camera, float nearPlane);
|
||
|
void AdjustFarPlane(Camera& camera, float farPlane);
|
||
|
|
||
|
glm::mat4 GetViewMatrix(Camera& camera);
|
||
|
}
|
||
|
|
||
|
#endif // CAMERA_H_
|