J'ai cette méthode pour déterminer la différence entre 2 0-360 caps. Bien que cela fonctionne pour déterminer à quel point absolument (comme, toujours sortie positive) je suis, j'ai du mal à comprendre ce qui doit être fait pour introduire le signe dans la sortie. Idéalement, si la distance la plus courte entre le cap initial et le cap final est en tournant dans le sens des aiguilles d'une montre, j'aimerais que le error
ait un signe positif, si la distance la plus courte entre les rubriques implique une rotation dans le sens inverse des aiguilles d'une montre. Je voudrais que le error
ait un signe négatif.Obtenir la différence entre deux rubriques
quelques exemples d'entrées souhaitées/sorties
initial
- final
-error
0 .................... 30. ......... 30
30 .................... 0 .......... -30
360 .................... 1 .......... 1
1 .......... . ......... 360 .......... -1
code:
/// <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(directionB))
{
error = directionA;
}
else
{
error = directionB;
}
return error;
}
est de 1 à 360 1 ou -1? –
Woop, je voulais dire -1 – chris12892