added debug methods

This commit is contained in:
2024-08-27 23:03:33 +03:00
parent 6356d06e34
commit 927d56fef3
2 changed files with 18 additions and 5 deletions

View File

@@ -18,9 +18,12 @@ namespace omath::projection
Camera(const Vector3& position, const Vector3& viewAngles, const Vector3& viewPort, float fov, float near, float far);
void SetViewAngles(const Vector3& viewAngles);
[[nodiscard]] const Vector3& GetViewAngles() const;
static float& GetFloat1();
static float& GetFloat2();
[[nodiscard]] Matrix GetViewMatrix() const;
[[nodiscard]] Matrix GetProjectionMatrix() const;
[[nodiscard]] Matrix GetProjectionMatrix(float scaleX, float scaleY) const;
[[nodiscard]] Matrix GetTranslationMatrix() const;
[[nodiscard]] Matrix GetOrientationMatrix() const;

View File

@@ -21,12 +21,22 @@ namespace omath::projection
m_farPlaneDistance = far;
}
float & Camera::GetFloat1() {
static float m_float1 = 1.52550f;
return m_float1;
}
float & Camera::GetFloat2() {
static float m_float2 = 1.14500f;
return m_float2;
}
Matrix Camera::GetViewMatrix() const
{
return GetTranslationMatrix() * GetOrientationMatrix();
}
Matrix Camera::GetProjectionMatrix() const
Matrix Camera::GetProjectionMatrix(const float scaleX, const float scaleY) const
{
const float fRight = std::tan(angles::DegreesToRadians(m_fieldOfView) / 2.f);
const float fLeft = -fRight;
@@ -40,8 +50,8 @@ namespace omath::projection
const auto near = m_nearPlaneDistance;
return Matrix({
{1.555f / (fRight - fLeft), 0.f, 0.f, 0.f},
{0.f, 1.15f / (top - botton), 0.f, 0.f},
{scaleX / (fRight - fLeft), 0.f, 0.f, 0.f},
{0.f, scaleY / (top - botton), 0.f, 0.f},
{0.f, 0.f, (far + near) / (far - near), 1.f},
{0.f, 0.f, -near * far / (far - near), 0.f},
});
@@ -78,7 +88,7 @@ namespace omath::projection
{
const auto posVecAsMatrix = Matrix({{worldPosition.x, worldPosition.y, worldPosition.z, 1.f}});
const auto viewProjectionMatrix = GetViewMatrix() * GetProjectionMatrix();
const auto viewProjectionMatrix = GetViewMatrix() * GetProjectionMatrix(GetFloat1(), GetFloat2());
auto projected = posVecAsMatrix * viewProjectionMatrix;