You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

47 lines
834 B

#pragma once
#include "Engine.hpp"
#include "Point.hpp"
#include <cmath>
constexpr float DegToRad(float degrees)
{
return degrees * (float)M_PI / 180.0f;
}
class Camera
{
public:
Camera()
{
position.x = 0.0f;
position.y = 0.0f;
position.z = 0.0f;
rotation.x = 0.0f;
rotation.y = 0.0f;
rotation.z = 0.0f;
zClipBias0 =
(CAMERA_FAR_CLIP + CAMERA_NEAR_CLIP)
/ (CAMERA_FAR_CLIP - CAMERA_NEAR_CLIP);
zClipBias1 =
(-2.0f * CAMERA_FAR_CLIP * CAMERA_NEAR_CLIP)
/ (CAMERA_FAR_CLIP - CAMERA_NEAR_CLIP);
xZoom = 1.0f / tanf(DegToRad(CAMERA_FOV / 2.0f));
yZoom = (xZoom * WINDOW_WIDTH) / WINDOW_HEIGHT;
xScale = (0.5f * WINDOW_WIDTH) - 0.5f;
yScale = (0.5f * WINDOW_HEIGHT) - 0.5f;
}
Point position;
Point rotation;
float zClipBias0, zClipBias1;
float xZoom, yZoom;
float xScale, yScale;
};