La distance la plus courte entre deux degrés, les marques sur un cercle?

Je suis à la recherche d'une formule pour trouver la distance la plus courte en degrés entre les deux degrés, les marques sur un cercle: par exemple, 30 degrés et 170 degrés (140 degrés).

Les deux degrés, les marques peuvent être pratiquement n'importe quel nombre réel, et n'est pas nécessairement compris entre 0 et 360 (peut être négatif, ou beaucoup plus que la 360, par exemple -528.2 et 740 (qui est 171.8 degrés)). Toutefois, cette distance doit toujours être <= 180 degrés et >= 0 degrés.

Il semble assez simple. Mais, j'ai essayé de trouver une bonne solution et j'ai essayé beaucoup de code, mais rien de ce que j'ai trouvé pour l'instant fonctionne dans tous les cas, j'ai essayé. Je travaille en c++. Quelqu'un a une idée?

abs(deg1 - deg2) vous donnera la différence, et puis une simple modulo mathématiques à la faire < 180 à tout moment devrait faire l'affaire.
Il semble que vous prendre la valeur absolue de ces deux numéros, et soustraire le plus petit du plus grand, basée sur des exemples.
qui ne fonctionne pas. Imaginez le point de départ étant à 90. Couvrant les 4 points que vous avez -90 (aka 270), 0, 90 et 180. Si vous avez un point à -90 et l'autre à 135 alors que la distance minimale entre eux est en fait 135.
Oui, j'ai réalisé que vous avez besoin d'un module de calcul.

OriginalL'auteur Joe Lyga | 2012-02-29