// Maths.cpp : Définit les fonctions de la bibliothèque statique. // #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #include "Maths.hpp" #include float Maths::FOVHToV(float fovH, float aspect) { return 2.0f * std::atan(std::tan(fovH * 0.5f * (M_PI / 180.0f)) / aspect) * (180.0f / M_PI); } float Maths::FOVVToH(float fovV, float aspect) { return 2.0f * std::atan(std::tan(fovV * 0.5f * (M_PI / 180.0f)) * aspect) * (180.0f / M_PI); } double Maths::DegreesToRadians(double degrees) { return degrees * M_PI / 180.0; } // Converts radians in degree double Maths::RadiansToDegrees(double radians) { return radians * 180.0 / M_PI; } double Maths::CompensateHorizontalFOV(double baseHorizontalFOVDeg, double baseAspectRatio, double targetAspectRatio) { double baseFOVRad = DegreesToRadians(baseHorizontalFOVDeg); // Step 1 : FOV vertical from horizontal FOV double verticalFOVRad = 2.0 * std::atan(std::tan(baseFOVRad / 2.0) / baseAspectRatio); // Step 2 : New horizontal FOV for target aspect ratio double newFOVRad = 2.0 * std::atan(std::tan(verticalFOVRad / 2.0) * targetAspectRatio); return RadiansToDegrees(newFOVRad); }