8#include "../utility/utility.hpp"
9#include "../macros.hpp"
13namespace hi {
inline namespace v1 {
34 perspective(
float fov_y,
float aspect_ratio,
float znear,
float zfar) noexcept :
35 _tan_half_fov_y(
std::tan(fov_y * 0.5f)), _aspect_ratio(aspect_ratio), _znear(znear), _zfar(zfar)
50 perspective(fov_y, view_port.width() / view_port.height(), znear, zfar)
54 [[nodiscard]]
constexpr operator matrix3() noexcept
56 hilet a = _aspect_ratio;
57 hilet t = _tan_half_fov_y;
63 1.0f / (a * t), 0.0f , 0.0f , 0.0f,
64 0.0f , 1.0f / t, 0.0f , 0.0f,
65 0.0f , 0.0f , f / (n - f), -(f * n) / (f - n),
66 0.0f , 0.0f , -1.0f , 0.0f
72 float _tan_half_fov_y;
geometry/margins.hpp
Definition lookahead_iterator.hpp:5
The HikoGUI API version 1.
Definition lookahead_iterator.hpp:6
A high-level geometric extent.
Definition extent2.hpp:29
A 2D or 3D homogenius matrix for transforming homogenious vectors and points.
Definition matrix3.hpp:30
Perspective transform.
Definition perspective.hpp:18
perspective(float fov_y, float aspect_ratio, float znear, float zfar) noexcept
Create a right-handed perspective transform.
Definition perspective.hpp:34
perspective(float fov_y, extent2 view_port, float znear, float zfar) noexcept
Create a right-handed perspective transform.
Definition perspective.hpp:49