Commit d88c5709 authored by Anika Treffehn's avatar Anika Treffehn
Browse files

restructured panning_wrap_angles

parent 30b6f9a7
Loading
Loading
Loading
Loading
Loading
+76 −66
Original line number Diff line number Diff line
@@ -1007,6 +1007,32 @@ void lls_interp_n(
    return;
}

#ifdef FIX_ANGLE_WRAPPING
/* helper function for panning_wrap_angles */
float static wrap_azi(
    const float azi_deg )
{
    float azi = azi_deg;

    /* Wrap azimuth value */
    if ( fabsf( azi ) > 180 )
    {
        azi = fmodf( azi + 180, 360 );
        if ( azi < 0 )
        {
            azi += 360;
        }

        azi -= 180;
    }

    /* Set -180 to 180 for deduplication purposes; angles are otherwise identical */
    if ( azi == -180 )
    {
        azi = 180;
    }
    return azi;
}

/*-------------------------------------------------------------------*
 * panning_wrap_angles()
@@ -1016,7 +1042,6 @@ void lls_interp_n(
 * elevation = [-90, 90]
 * Considers direction changes from large elevation values
 *-------------------------------------------------------------------*/
#ifdef FIX_ANGLE_WRAPPING
void panning_wrap_angles(
    const float azi_deg, /* i  : azimuth in degrees for panning direction (positive left) */
    const float ele_deg, /* i  : elevation in degrees for panning direction (positive up) */
@@ -1029,39 +1054,28 @@ void panning_wrap_angles(
    azi = azi_deg;
    ele = ele_deg;

	if ( ele <= 90 && ele >= -90 )
    if ( fabs( ele ) <= 90 )
    {
        *ele_wrapped = ele;
        if ( azi > 180.0f || azi <= -180.0f )
        {
            /* Wrap azimuth value */
            if ( fabsf( azi ) > 180 )
            {
                azi = fmodf( azi + 180, 360 );
                azi -= 180;
            }

            /* Set -180 to 180 for deduplication purposes; angles are otherwise identical */
            if ( azi == -180 )
        if ( azi > 180 || azi <= -180 )
        {
                azi = 180;
            }
            azi = wrap_azi( azi );
        }
        *azi_wrapped = azi;
        return;

    }
    else
    {
        /* Special case when elevation is a multiple of 90; azimuth is irrelevant */
		if ( ( ele != 0 ) && ( fmodf( ele, 90 ) == 0 ) && ( fmodf( ele, 180 ) != 0 ) )
        if ( ( fmodf( ele, 90 ) == 0 ) && ( fmodf( ele, 180 ) != 0 ) )
        {
            float y = fmodf( ele, 180 );
            azi = 0;
            while ( ele > 90 )
            {
                ele -= 360;
            }
            while ( ele < 90 )
            while ( ele < -90 )
            {
                ele += 360;
            }
@@ -1084,20 +1098,7 @@ void panning_wrap_angles(
                    ele = -180 - ele;
                }
            }

			/* Wrap azimuth value */
			if ( fabsf( azi ) > 180 )
			{
				azi = fmodf( azi + 180, 360 );
				azi -= 180;
			}
		}

		/* Set -180 to 180 for deduplication purposes; angles are otherwise identical */
		if ( azi == -180 )
		{
			azi = 180;
		}
            azi = wrap_azi( azi );
        }

        *azi_wrapped = azi;
@@ -1105,7 +1106,16 @@ void panning_wrap_angles(

        return;
    }
}
#else
/*-------------------------------------------------------------------*
 * panning_wrap_angles()
 *
 * Wrap angles for amplitude panning to the range:
 * azimuth = (-180, 180]
 * elevation = [-90, 90]
 * Considers direction changes from large elevation values
 *-------------------------------------------------------------------*/
void panning_wrap_angles(
    const float azi_deg, /* i  : azimuth in degrees for panning direction (positive left) */
    const float ele_deg, /* i  : elevation in degrees for panning direction (positive up) */
@@ -1119,7 +1129,7 @@ void panning_wrap_angles(
    ele = ele_deg;

    /* Special case when elevation is a multiple of 90; azimuth is irrelevant */
    if ( ( ele != 0 ) && ( fmodf( ele, 90 ) == 0 ) && ( fmodf( ele, 180 ) != 0 ) )
    if ( ( ele != 0 ) && ( fmodf( ele, 90 ) == 0 ) )
    {
        azi = 0;
        while ( fabsf( ele ) > 90 )
@@ -1138,11 +1148,11 @@ void panning_wrap_angles(
            /* Compensate elevation accordingly */
            if ( ele > 90 )
            {
                ele = 180 - ele;
                ele -= 180;
            }
            else if ( ele < -90 )
            {
                ele = -180 - ele;
                ele += 180;
            }
        }