mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 14:51:40 +00:00
- made some changes to vectors.h so that it can be used without the floating point function replacements.
Using __has_include and providing fallback implementations.
This commit is contained in:
parent
40679294df
commit
62b9243142
2 changed files with 25 additions and 8 deletions
|
@ -35,6 +35,7 @@
|
||||||
#include "hw_viewpointuniforms.h"
|
#include "hw_viewpointuniforms.h"
|
||||||
#include "v_2ddrawer.h"
|
#include "v_2ddrawer.h"
|
||||||
#include "i_specialpaths.h"
|
#include "i_specialpaths.h"
|
||||||
|
#include "cmdlib.h"
|
||||||
|
|
||||||
VkRenderPassManager::VkRenderPassManager(VulkanRenderDevice* fb) : fb(fb)
|
VkRenderPassManager::VkRenderPassManager(VulkanRenderDevice* fb) : fb(fb)
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,23 +44,32 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
// this is needed to properly normalize angles. We cannot do that with compiler provided conversions because they differ too much
|
||||||
#include "xs_Float.h"
|
#include "xs_Float.h"
|
||||||
#include "math/cmath.h"
|
|
||||||
#include "basics.h"
|
|
||||||
#include "cmdlib.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define EQUAL_EPSILON (1/65536.)
|
|
||||||
|
|
||||||
// make this a local inline function to avoid any dependencies on other headers and not pollute the global namespace
|
// make this a local inline function to avoid any dependencies on other headers and not pollute the global namespace
|
||||||
namespace pi
|
namespace pi
|
||||||
{
|
{
|
||||||
inline constexpr double pi() { return 3.14159265358979323846; }
|
inline constexpr double pi() { return 3.14159265358979323846; }
|
||||||
inline constexpr double pif() { return 3.14159265358979323846f; }
|
inline constexpr float pif() { return 3.14159265358979323846f; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// optionally use reliable math routines if reproducability across hardware is important., but let this still compile without them.
|
||||||
|
#if __has_include("math/cmath.h")
|
||||||
|
#include "math/cmath.h"
|
||||||
|
#else
|
||||||
|
double g_cosdeg(double v) { return cos(v * (pi::pi() / 180.)); }
|
||||||
|
double g_sindeg(double v) { return sin(v * (pi::pi() / 180.)); }
|
||||||
|
double g_cos(double v) { return cos(v); }
|
||||||
|
double g_sin(double v) { return sin(v); }
|
||||||
|
double g_sqrt(double v) { return sqrt(v); }
|
||||||
|
double g_atan2(double v, double w) { return atan2(v, w); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define EQUAL_EPSILON (1/65536.)
|
||||||
|
|
||||||
template<class vec_t> struct TVector3;
|
template<class vec_t> struct TVector3;
|
||||||
template<class vec_t> struct TRotator;
|
template<class vec_t> struct TRotator;
|
||||||
template<class vec_t> struct TAngle;
|
template<class vec_t> struct TAngle;
|
||||||
|
@ -1450,8 +1459,13 @@ public:
|
||||||
|
|
||||||
double Tan() const
|
double Tan() const
|
||||||
{
|
{
|
||||||
|
// use an optimized approach if we have a sine table. If not just call the CRT's tan function.
|
||||||
|
#if __has_include("math/cmath.h")
|
||||||
const auto bam = BAMs();
|
const auto bam = BAMs();
|
||||||
return g_sinbam(bam) / g_cosbam(bam);
|
return g_sinbam(bam) / g_cosbam(bam);
|
||||||
|
#else
|
||||||
|
return vec_t(tan(Radians()));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is for calculating vertical velocity. For high pitches the tangent will become too large to be useful.
|
// This is for calculating vertical velocity. For high pitches the tangent will become too large to be useful.
|
||||||
|
@ -1460,9 +1474,11 @@ public:
|
||||||
return clamp(Tan(), -max, max);
|
return clamp(Tan(), -max, max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// returns sign of the NORMALIZED angle.
|
||||||
int Sgn() const
|
int Sgn() const
|
||||||
{
|
{
|
||||||
return ::Sgn(int(BAMs()));
|
auto val = int(BAMs());
|
||||||
|
return (val > 0) - (val < 0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue