Saya ingin membandingkan sudut dan mendapatkan gagasan tentang jarak di antara mereka. Untuk aplikasi ini, saya bekerja dalam derajat, tetapi itu juga berfungsi untuk radian dan lulusan. Masalah dengan sudut adalah bahwa mereka bergantung pada aritmatika modular, yaitu 0-360 derajat.
Katakan satu sudut di 15 derajat dan satu di 45. Perbedaannya adalah 30 derajat, dan sudut 45 derajat lebih besar dari 15 derajat.
Tapi, ini rusak ketika Anda memiliki, katakanlah, 345 derajat dan 30 derajat. Meskipun mereka membandingkan dengan benar, perbedaan di antara mereka adalah 315 derajat, bukan 45 derajat yang benar.
Bagaimana saya bisa memecahkan masalah ini? Saya bisa menulis kode algoritmik:
if(angle1 > angle2) delta_theta = 360 - angle2 - angle1;
else delta_theta = angle2 - angle1;
Tapi saya lebih suka solusi yang menghindari membandingkan / cabang, dan bergantung sepenuhnya pada aritmatika.