#include <BoardManager.h>
Definition at line 32 of file BoardManager.h.
◆ Camera()
◆ fboToNdcPos()
| glm::vec2 Camera::fboToNdcPos |
( |
glm::vec2 | fbo_pixel_top_left_origin | ) |
const |
|
inline |
Definition at line 115 of file BoardManager.h.
116 {
117 glm::vec2 ndc;
118 ndc.x = (2.0f * fbo_pixel_top_left_origin.x) /
fbo_dimensions.x - 1.0f;
119 ndc.y = 1.0f - (2.0f * fbo_pixel_top_left_origin.y) /
fbo_dimensions.y;
120 return ndc;
121 }
◆ getPosition()
| glm::vec2 Camera::getPosition |
( |
| ) |
const |
|
inline |
◆ getProjectionMatrix()
| glm::mat4 Camera::getProjectionMatrix |
( |
| ) |
const |
|
inline |
Definition at line 82 of file BoardManager.h.
83 {
86 return glm::ortho(-half_width, half_width, half_height, -half_height, -1.0f, 1.0f);
87 }
◆ getViewMatrix()
| glm::mat4 Camera::getViewMatrix |
( |
| ) |
const |
|
inline |
◆ getZoom()
| float Camera::getZoom |
( |
| ) |
const |
|
inline |
◆ pan()
| void Camera::pan |
( |
glm::vec2 | delta | ) |
|
|
inline |
◆ screenToWorldPosition()
| glm::vec2 Camera::screenToWorldPosition |
( |
glm::vec2 | fbo_pixel_top_left_origin | ) |
const |
|
inline |
Definition at line 123 of file BoardManager.h.
124 {
125
126 glm::vec2 ndc =
fboToNdcPos(fbo_pixel_top_left_origin);
127 glm::vec4 ndc_homogeneous = glm::vec4(ndc.x, ndc.y, 0.0f, 1.0f);
129 glm::vec4 world_homogeneous = inverse_pv_matrix * ndc_homogeneous;
130 glm::vec2 world_position;
131 if (world_homogeneous.w != 0.0f)
132 {
133 world_position.x = world_homogeneous.x / world_homogeneous.w;
134 world_position.y = world_homogeneous.y / world_homogeneous.w;
135 }
136 else
137 {
138 return glm::vec2(NAN, NAN);
139 }
140
141 return world_position;
142 }
glm::mat4 getViewMatrix() const
glm::mat4 getProjectionMatrix() const
glm::vec2 fboToNdcPos(glm::vec2 fbo_pixel_top_left_origin) const
◆ setFboDimensions()
| void Camera::setFboDimensions |
( |
glm::vec2 | dims | ) |
|
|
inline |
◆ setPosition()
| void Camera::setPosition |
( |
glm::vec2 | newPosition | ) |
|
|
inline |
◆ setZoom()
| void Camera::setZoom |
( |
float | newZoomLevel | ) |
|
|
inline |
◆ worldToScreenPosition()
| glm::vec2 Camera::worldToScreenPosition |
( |
glm::vec2 | world_position | ) |
const |
|
inline |
Definition at line 89 of file BoardManager.h.
90 {
91 glm::vec4 world_homogeneous = glm::vec4(world_position.x, world_position.y, 0.0f, 1.0f);
92
93
94
96 glm::vec4 clip_coords = pv_matrix * world_homogeneous;
97
98 glm::vec2 ndc;
99 if (clip_coords.w != 0.0f)
100 {
101 ndc.x = clip_coords.x / clip_coords.w;
102 ndc.y = clip_coords.y / clip_coords.w;
103 }
104 else
105 {
106 return glm::vec2(NAN, NAN);
107 }
108 glm::vec2 fbo_pixel_top_left_origin;
109 fbo_pixel_top_left_origin.x = (ndc.x + 1.0f) * 0.5f *
fbo_dimensions.x;
110 fbo_pixel_top_left_origin.y = (1.0f - ndc.y) * 0.5f *
fbo_dimensions.y;
111
112 return fbo_pixel_top_left_origin;
113 }
◆ zoom()
| void Camera::zoom |
( |
float | factor, |
|
|
glm::vec2 | mouse_world_pos_before_zoom ) |
|
inline |
Definition at line 43 of file BoardManager.h.
44 {
49 {
50 return;
51 }
52 float zoom_ratio =
zoom_level / old_zoom_level;
53 position = mouse_world_pos_before_zoom - (mouse_world_pos_before_zoom -
position) / zoom_ratio;
54 }
◆ fbo_dimensions
| glm::vec2 Camera::fbo_dimensions |
|
private |
◆ position
| glm::vec2 Camera::position |
|
private |
◆ zoom_level
The documentation for this class was generated from the following file: