Fix HRTF elevation calculation

This commit is contained in:
Chris Robinson
2011-05-19 17:57:14 -07:00
parent 555ccce4ee
commit 7396aaf2c2
3 changed files with 6 additions and 6 deletions
+1 -1
View File
@@ -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++)
+4 -4
View File
@@ -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);
+1 -1
View File
@@ -600,7 +600,7 @@ ALboolean IsValidChannels(ALenum type);
#define HRTF_BITS (7)
#define HRTF_LENGTH (1<<HRTF_BITS)
#define HRTF_LENGTH_MASK (HRTF_LENGTH-1)
void GetHrtfCoeffs(ALfloat azimuth, ALfloat angle, const ALshort **left, const ALshort **right);
void GetHrtfCoeffs(ALfloat elevation, ALfloat angle, const ALshort **left, const ALshort **right);
void al_print(const char *fname, unsigned int line, const char *fmt, ...)
PRINTF_STYLE(3,4);