Files
ReshadePluginsCore/libs/Maths/Maths.cpp

35 lines
1.2 KiB
C++

// Maths.cpp : Définit les fonctions de la bibliothèque statique.
//
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#include "Maths.hpp"
#include <cmath>
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);
}