aboutsummaryrefslogtreecommitdiffstats
path: root/alc/alu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'alc/alu.cpp')
-rw-r--r--alc/alu.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/alc/alu.cpp b/alc/alu.cpp
index 37d5a1ed..dbf4dedf 100644
--- a/alc/alu.cpp
+++ b/alc/alu.cpp
@@ -40,6 +40,7 @@
#include <utility>
#include "almalloc.h"
+#include "alnumbers.h"
#include "alnumeric.h"
#include "alspan.h"
#include "alstring.h"
@@ -505,16 +506,16 @@ bool CalcEffectSlotParams(EffectSlot *slot, EffectSlot **sorted_slots, ContextBa
inline float ScaleAzimuthFront(float azimuth, float scale)
{
const float abs_azi{std::fabs(azimuth)};
- if(!(abs_azi >= al::MathDefs<float>::Pi()*0.5f))
- return std::copysign(minf(abs_azi*scale, al::MathDefs<float>::Pi()*0.5f), azimuth);
+ if(!(abs_azi >= al::numbers::pi_v<float>*0.5f))
+ return std::copysign(minf(abs_azi*scale, al::numbers::pi_v<float>*0.5f), azimuth);
return azimuth;
}
/* Wraps the given value in radians to stay between [-pi,+pi] */
inline float WrapRadians(float r)
{
- constexpr float Pi{al::MathDefs<float>::Pi()};
- constexpr float Pi2{al::MathDefs<float>::Tau()};
+ constexpr float Pi{al::numbers::pi_v<float>};
+ constexpr float Pi2{Pi*2.0f};
if(r > Pi) return std::fmod(Pi+r, Pi2) - Pi;
if(r < -Pi) return Pi - std::fmod(Pi-r, Pi2);
return r;
@@ -617,17 +618,18 @@ void AmbiRotator(std::array<std::array<float,MaxAmbiChannels>,MaxAmbiChannels> &
auto V = [P](const int l, const int m, const int n, const size_t last_band,
const std::array<std::array<float,MaxAmbiChannels>,MaxAmbiChannels> &R)
{
+ using namespace al::numbers;
if(m > 0)
{
const bool d{m == 1};
const float p0{P( 1, l, m-1, n, last_band, R)};
const float p1{P(-1, l, -m+1, n, last_band, R)};
- return d ? p0*std::sqrt(2.0f) : (p0 - p1);
+ return d ? p0*sqrt2_v<float> : (p0 - p1);
}
const bool d{m == -1};
const float p0{P( 1, l, m+1, n, last_band, R)};
const float p1{P(-1, l, -m-1, n, last_band, R)};
- return d ? p1*std::sqrt(2.0f) : (p0 + p1);
+ return d ? p1*sqrt2_v<float> : (p0 + p1);
};
auto W = [P](const int l, const int m, const int n, const size_t last_band,
const std::array<std::array<float,MaxAmbiChannels>,MaxAmbiChannels> &R)
@@ -816,7 +818,7 @@ void CalcPanningAndFilters(Voice *voice, const float xpos, const float ypos, con
* panning.
*/
const float coverage{!(Distance > std::numeric_limits<float>::epsilon()) ? 1.0f :
- (Spread * (1.0f/al::MathDefs<float>::Tau()))};
+ (al::numbers::inv_pi_v<float>/2.0f * Spread)};
auto calc_coeffs = [xpos,ypos,zpos](RenderMode mode)
{
@@ -1388,7 +1390,8 @@ void CalcAttnSourceParams(Voice *voice, const VoiceProps *props, const ContextBa
/* Calculate directional soundcones */
if(directional && props->InnerAngle < 360.0f)
{
- const float Angle{Rad2Deg(std::acos(-Direction.dot_product(ToSource)) * ConeScale * 2.0f)};
+ constexpr float Rad2Deg{5.72957795130823229e+01f/*180/pi*/};
+ const float Angle{Rad2Deg*2.0f * std::acos(-Direction.dot_product(ToSource)) * ConeScale};
float ConeGain, ConeHF;
if(!(Angle > props->InnerAngle))
@@ -1520,7 +1523,7 @@ void CalcAttnSourceParams(Voice *voice, const VoiceProps *props, const ContextBa
float spread{0.0f};
if(props->Radius > Distance)
- spread = al::MathDefs<float>::Tau() - Distance/props->Radius*al::MathDefs<float>::Pi();
+ spread = al::numbers::pi_v<float>*2.0f - Distance/props->Radius*al::numbers::pi_v<float>;
else if(Distance > 0.0f)
spread = std::asin(props->Radius/Distance) * 2.0f;