27 lines
893 B
C++
27 lines
893 B
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>
|
||
|
|
|
||
|
|
double Maths::DegreesToRadians(double degrees) {
|
||
|
|
return degrees * M_PI / 180.0;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Convertit des radians en degrés
|
||
|
|
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);
|
||
|
|
}
|