2 0-360 pusula başlığı arasındaki farkı bulmak için bu yönteme sahibim.İki başlık arasındaki farkı alma
Bu, kesinlikle (her zaman pozitif çıktıda olduğu gibi) ne kadar uzakta olduğumu anlamaya çalışsa da, çıktıya işareti tanıtmak için yapılması gerekenleri bulmakta zorlanıyorum.
İdeal olarak, eğer ilk başlığın son istikametinden en kısa mesafe saat yönünde ilerliyorsa, error
'un pozisyonları arasındaki en kısa mesafe karşı saat yönünün tersine çevrilmesini gerektiriyorsa error
'un negatif bir işareti olmasını istiyorum.
istenen girdi birkaç örnek/çıkış
initial
-error
0 .................... 30-final
. ......... 30
30 .................... 0 .......... -30
.................... 1 .......... 1
1 360 .......... . ......... 360 .......... -1
Kodu:
/// <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;
}
1'den 360'a 1 veya -1? –
Woop, -1 – chris12892