Obteniendo la diferencia entre dos encabezados

Tengo este método para descubrir la diferencia entre 2 0-360 encabezados de brújula.

Aunque esto funciona para determinar cuán lejos estoy (absolutamente en salida positiva), estoy teniendo problemas para determinar qué se debe hacer para introducir el signo en la salida.

dealmente, si la distancia más corta desde el rumbo inicial hasta el rumbo final es girando en el sentido de las agujas del reloj, me gustaría elerror para tener un signo positivo, si la distancia más corta entre los encabezados implica ir en sentido antihorario, me gustaría queerror para tener un signo negativo.

Algunos ejemplos de entradas / salidas deseadas

initial -final -error

0 .................... 30 .......... 30

30 .................... 0 .......... -30

360 .................... 1 .......... 1

1 .................... 360 .......... -1

Código

    /// <summary>
    /// Calculate the error from a given initial heading to a final heading
    /// </summary>
    /// <param name="inital"></param>
    /// <param name="final"></param>
    /// <returns></returns>
    private double GetHeadingError(double initial, double final)
    {
        double directionA = final - initial;
        double directionB = 360 - (final + initial);
        double error = 0;

        if (Math.Abs(directionA) < Math.Abs(direc,tionB))
        {
            error = directionA;
        }
        else
        {
            error = directionB;
        }

        return error;
    }

Respuestas a la pregunta(5)

Su respuesta a la pregunta