Kürzeste Entfernung zwischen zwei-Grad-Markierungen auf einem Kreis?

Ich bin auf der Suche nach eine Formel zu finden, die den kürzesten Abstand in Grad zwischen zwei-Grad-Markierungen auf einem Kreis: zum Beispiel die 30 Grad und 170 Grad (140°).

Dem zwei-Grad-Markierungen können praktisch beliebige reelle Zahl, und ist nicht notwendigerweise zwischen 0 und 360 (kann auch negativ sein, oder viel größer als 360, zum Beispiel -528.2 und 740 (das ist 171.8 Grad). Allerdings sollte der Abstand immer <= 180 ° und >= 0 Grad.

Es klingt einfach genug. Aber, ich habe versucht, eine gute Lösung zu finden für dies und ich habe versucht, eine Menge von unterschiedlichen code, aber nichts, was ich bisher gefunden habe, funktioniert in allen Fällen, die ich bisher ausprobiert habe. Ich arbeite in c++. Hat jemand irgendwelche Ideen?

  • abs(deg1 - deg2) wird Ihnen die Differenz und dann einige einfache modulo Mathe zu machen, werden < 180 zu allen Zeiten tun sollten, die trick.
  • Es klingt wie Sie den absoluten Wert der zahlen und subtrahiere die kleinste von der größten, auf Ihre Beispiele.
  • dass tatsächlich nicht funktioniert. Stellen Sie sich der Startpunkt -90. Abdeckung 4 Punkte Sie haben, -90 (aka 270), 0, 90 und 180. Wenn Sie einen Punkt auf -90 und anderen bei 135 dann wird der minimale Abstand zwischen Ihnen ist tatsächlich 135.
  • Ja, ich erkannte Sie müssen ein E-Modul-Berechnung.
InformationsquelleAutor Joe Lyga | 2012-02-29
Schreibe einen Kommentar