J'ai cette méthode de détermination de la différence entre 2 titres de compas de 2 0 à 360.
Bien que cela fonctionne pour déterminer à quelle distance (comme dans, toujours une production toujours positive) je suis, j'ai du mal à comprendre Ce qui doit être fait pour introduire le signe dans la sortie. p>
Idéalement, si la distance la plus courte de l'en-tête initiale sur la rubrique finale est en cours dans le sens des aiguilles d'une montre, j'aimerais que l'erreur Quelques exemples d'entrées / sorties souhaitées p> 0 ............. ....... 30 .......... 30 P> 30 .................... 0 .. ........ -30 P> 360 .................... 1 .......... 1 p> 1 ........................ 360 .......... -1 P> code: p> code> ait un signe positif, si la distance la plus courte Entre les rubriques implique de contourner la contre-classe, j'aimerais que l'erreur
code> d'avoir un signe négatif. p>
initial code> -
final code> -
erreur code> p>
5 Réponses :
Je pense que votre table des résultats souhaités est incorrecte. Voici mon chemin Klunky:
alors voici ma tentative ... p>
Vraiment utile: j'ai lutté avec cela pendant un moment.
Cela n'a pas fonctionné pour moi lorsque les rubriques étaient proches de 0. Voir ma solution ci-dessous, qui est basée sur Cette réponse d'avionique < / a>.
Si je comprends la question correctement, je pense que le code suivant devrait fonctionner: essentiellement, je traite 360 degrés de la même manière que 0, ce qui, à mon avis, c'est d'accord. Ce code produira les mêmes résultats que ceux énumérés dans le tableau ci-dessus. Le code ne fait pas la vérification des limites, il s'attend à des valeurs comprises entre 0 et 360. P> P>
Degree_Diff = (MIN(ABS(ENDCOMPASS-STARTCOMPASS),ABS(360-ENDCOMPASS+STARTCOMPASS),ABS(360-STARTCOMPASS+ENDCOMPASS)))
Bienvenue à Stackoverflow! Il est toujours préférable de fournir une brève description pour un exemple de code pour améliorer la précision post :)
Voici une solution simple, bien que nommée un peu différemment et en fléchette. Basé sur Cette réponse d'avionics répond à .
double headingDiff(double h1, double h2) => (h2 - h1 + 540) % 360 - 180;