From 7396aaf2c28ef4e16c3f27d0cc3c06cc09134d41 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Thu, 19 May 2011 17:57:14 -0700 Subject: Fix HRTF elevation calculation --- Alc/ALu.c | 2 +- Alc/hrtf.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'Alc') diff --git a/Alc/ALu.c b/Alc/ALu.c index a4304448..ce68cdf9 100644 --- a/Alc/ALu.c +++ b/Alc/ALu.c @@ -669,7 +669,7 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext) { const ALshort *hrtf_left, *hrtf_right; - GetHrtfCoeffs(atan2(Position[1], -Position[2]*ZScale) * (180.0/M_PI), + GetHrtfCoeffs(asin(Position[1]) * (180.0/M_PI), atan2(Position[0], -Position[2]*ZScale) * (180.0/M_PI), &hrtf_left, &hrtf_right); for(i = 0;i < HRTF_LENGTH;i++) diff --git a/Alc/hrtf.c b/Alc/hrtf.c index 09747209..da461dcf 100644 --- a/Alc/hrtf.c +++ b/Alc/hrtf.c @@ -53,14 +53,14 @@ static void get_angle_coeffs(const HrtfFilterCoeffs *elev, ALfloat angle, const } } -void GetHrtfCoeffs(ALfloat azimuth, ALfloat angle, const ALshort **left, const ALshort **right) +void GetHrtfCoeffs(ALfloat elevation, ALfloat angle, const ALshort **left, const ALshort **right) { int idx; - if(azimuth > 90.f) azimuth = 90.f - (azimuth - 90.f); - else if(azimuth < -90.f) azimuth = -90.f - (azimuth - -90.f); + if(elevation > 90.f) elevation = 90.f - (elevation - 90.f); + else if(elevation < -90.f) elevation = -90.f - (elevation - -90.f); - idx = (int)(azimuth/10.0 + 0.5); + idx = (int)(elevation/10.0 + 0.5); if(idx >= 9) return get_angle_coeffs(&Elev90, angle, left, right); if(idx >= 8) return get_angle_coeffs(&Elev80, angle, left, right); if(idx >= 7) return get_angle_coeffs(&Elev70, angle, left, right); -- cgit v1.2.3