7#include "utils/flags.h"
26 static constexpr float NEAR = 0.01f,
FAR = 2048.0f;
36 float max_v = std::numeric_limits<float>::infinity();
37 float max_rv = std::numeric_limits<float>::infinity();
38 float max_zv = std::numeric_limits<float>::infinity();
41 static constexpr float fov(
float distance,
float length);
42 bool dash(
void)
const {
return this->flags.
is_set(Flag::DASH); }
69inline constexpr float Camera::fov(
float distance,
float width) {
70 return 2.0f * std::atan(
static_cast<float>(width) / 2 / distance);
static constexpr T radians(T d)
Definition: math.h:194
update
Definition: img_common.lua:42
pos
Definition: lua_audio.cpp:17
set_perspective
Definition: camera.lua:44
std::chrono::seconds s
Definition: timing.cpp:6
mat4_base< float > mat4
Definition: mat4.h:62
Abstract orthographic/perspective camera.
Definition: camera.h:18
float fov_y
Field of view in perspective mode.
Definition: camera.h:34
void set_rot(const vec3 &rot)
Definition: camera.cpp:116
mat4 gen_screen_proj(void) const
Definition: camera.cpp:44
float damp
Damping factor when not accelerating.
Definition: camera.h:39
vec4 to_view(vec3 vp) const
Definition: camera.cpp:80
vec3 up(void) const
Definition: camera.cpp:25
Flag
Definition: camera.h:19
void set_fov_y(float f)
Definition: camera.cpp:126
static constexpr float FAR
Perspective projection far plane.
Definition: camera.h:26
mat4 screen_proj
Projection matrix for screen coordinates.
Definition: camera.h:35
vec3 pos(void) const
Definition: camera.cpp:10
Flags< Flag > flags
Definition: camera.h:40
static const float TAN_HALF_FOVY
Definition: camera.h:29
bool dash(void) const
Definition: camera.h:42
float zoom_a
Scaling factor acceleration.
Definition: camera.h:32
void set_zoom(float z)
Definition: camera.cpp:121
float zoom
Scaling factor.
Definition: camera.h:32
bool perspective(void) const
Definition: camera.h:65
uvec2 screen
Screen size.
Definition: camera.h:33
vec3 a
Acceleration.
Definition: camera.h:30
static const float TAN_FOVY
Definition: camera.h:28
mat4 view
View matrix.
Definition: camera.h:35
vec3 v
Velocity.
Definition: camera.h:30
static constexpr float FOVY
Perspective projection field of view along the Y axis (default).
Definition: camera.h:27
static constexpr float NEAR
Perspective projection near plane.
Definition: camera.h:26
float zoom_v
Scaling factor velocity.
Definition: camera.h:32
vec3 eye(void) const
Definition: camera.cpp:18
@ PERSPECTIVE
Chooses between orthographic/perspective mode.
Definition: camera.h:23
@ N_FLAGS
Definition: camera.h:24
@ UPDATED
Parameters of the camera have changed.
Definition: camera.h:20
@ SCREEN_UPDATED
The screen size has changed.
Definition: camera.h:21
@ DASH
Increases the speed of displacement/rotation/etc.
Definition: camera.h:22
vec3 r
Definition: camera.h:31
float max_zv
Definition: camera.h:38
mat4 gen_view(void) const
Definition: camera.cpp:49
vec3 rv
Definition: camera.h:31
void set_dash(bool b)
Definition: camera.h:60
float max_v
Maximum value for v.
Definition: camera.h:36
static constexpr float fov(float distance, float length)
Definition: camera.h:69
mat4 gen_proj(void) const
Definition: camera.cpp:34
vec3 to_world(vec3 vp) const
Definition: camera.cpp:84
void set_screen(const uvec2 &s)
Definition: camera.cpp:104
vec3 rot
Rotational Euler angles (ZYX).
Definition: camera.h:187
vec3 p
Position.
Definition: camera.h:30
void look_at(const vec3 &pos, const vec3 &eye, const vec3 &up)
Definition: camera.cpp:131
float max_rv
Definition: camera.h:37
vec3 to_clip(vec3 vp) const
Definition: camera.cpp:71
vec3 ra
Definition: camera.h:31
void set_pos(const vec3 &pos)
Definition: camera.cpp:111
mat4 proj
Projection matrix (orthographic/perspective).
Definition: camera.h:35
Wrapper for an unsigned integral representing flags.
Definition: flags.h:18
constexpr bool is_set(AT a) const
Definition: flags.h:26
constexpr Flags & set(AT a)
Definition: flags.h:28