Non, la magie n'est pas dans ta formule, figures toi que vu le nombre de pistes que j'ai exploré, sauf étant bien fatigué durant ces exercices intellectuels, je suis arrivé rapidement à la conclusion que la frontière qui départage le cap désiré et son opposé à plus 180° constitue un test incontournable pour rechercher le coté où il faut tourner. La magie, résiderait dans une formule simple qui résous tous les cas.
Ta proposition est séduisante, et sa formulation simple :
On va à droite si le CAP est supérieur au compas ET le CAP est inférieur au compas +180.
360 est exclu c'est spécifié dans le commentaire.
Exemple : CAP = 20 et COMPAS = 340.
Le cap est inférieur au compas, donc la condition n’est pas satisfaite. Donc on tourne à gauche par le plus grand angle.
C’est la raison pour laquelle, seul un test réel sur Arduino permet ensuite de proposer une solution que l’on croit fiable … car elle peut satisfaire le jeu d’essais envisagé, mais est-on certain d’avoir pensé à tout ?
Par exemple dans le programme qui semble fonctionner, initialement j’avais envisagé tous les cas combinatoires … sauf que j’avais oublié le cas simple ou CAP et COMPAS sont dans le même quadrant ! (Quatre tests de plus sans compter un jeu d’essais plus complet)
360 est exclu c'est spécifié dans le commentaire. La fonction qui délivre le cap comme celle qui délivre le compas ne devrait d'ailleurs pas retourner cette valeur qui n'a aucun sens dans ce contexte.
Ben … ce n’est pas le cas dans l’esprit des ingénieurs qui ont conçu le circuit intégré que j’utilise comme "capteur croisé" de champs magnétiques. Pourtant, vu sa complexité je ne suis pas persuadé que ces techniciens soient béotiens en électronique ou en mathématiques.
De toute façon, cette dualité ne me pose aucun problème, je l’ai signalé. C’est enfantin à résoudre sur Arduino. Du reste je ne transposerai 360 en 0 que si cette duplicité engendre un quelconque problème dans mes procédures. Si ce n’est pas le cas, je vais éviter un test inutile … au détriment de l’élégance de l’écriture, c’est une simple question de choix.