bonjour
je suis en tsi et je travaille actuellement sur un robot autonome.
je suis amené tester en condition si l'angle de mon robot est conforme ou non à la direction dans laquelle je lui demande daller.
vous l'aurais compris c'est bien trop foullit.
surtout que se genre de condition devras se répéter tout le long du programme
comment puis'je simplifier sa, d'une par en réduisant mon degreereel (modulo 2Kpie)
et d'autre par en posant : si degrereel et environ égal à 90 dégrée. ou bien suis'je obligé de passé par un encadrement
Dans un premier temps, si tu compares souvent à une même constante provenant d'un calcul comme 'sqrt(2)/2', place plutôt le résultat dans une variable. Cela évitera de recalculer à chaque fois donc gain de temps et de lisibilité.
Ensuite pourquoi isoler une portion d'angle par une combinaison de son sinus et cosinus quand tu peux directement le faire avec l'angle lui-même ((degrereel>225) && (degrereel<=315)).
En combinant tout et en utilisant une variable d'ouverture +/- angle autour de 270°, ça va simplifier ton code.
Édit: pour en revenir à ta formule, en limitant le sinus entre -0,7.. et -1, tu limites aussi la fenêtre des cosinus. L'ajout du cosinus te permet juste de choisir entre le troisième et le quatrième cadran.
Zlika:
Ensuite pourquoi isoler une portion d'angle par une combinaison de son sinus et cosinus quand tu peux directement le faire avec l'angle lui-même...
Disons qu’il faut ramener l’angle peut être entre [0, 360[ dans ce cas (et pas en radian sinon tester entre [0, 2Pi[). Mais ce sera plus rapide que sinus et cosinus
le ! est la car je teste si l'orientation demandé n'est pas en phase avec l'orientation réelle.
sinon les problèmes que je vois maintenant sont:
pour faire la simplification de mon angle j'utilise % mais il me semble qu'on ne peux le faire avec une variable float, degrereel en est une je ne peux m'en passé mon robot étant autonome , la précision est primordial.
d'autre part degrereel peut tout a fait passé dans le négatif le robot peut tourné dans les deux sens trigo et horaire, y'a t'il une solution pour convertir un angle négatif en positif quand je simplifie l'anglereel ou bien dois'je ajouté dans ma condition un || avec les valeur négative équivalente
vis à vis du programme qu'il soit en radiant ou non n'a pas trop d’importance il me suffit de modifié son calcule pour cela, effectivement j'été partis en radiant au début car j'utilisé du cos et du sinus, désolé de ne pas avoir précisé le changement.
sinon dois'je séparé les inégalité pour le langage ?
Zlika:
Ça devient compliqué à la lecture .
Pourquoi n'utilises tu pas les angles du cadran 3 et 4 avec un ET logique plutôt que d'utiliser l'inversion ?
Si je me réfère au code de ton premier post, tu veux tester si tes deux conditions sont vraies, donc tu dois choisir la fourchette des deux angles limites. Pour le sud, c'est 270 plus ou moins 45 degrés.
Pourquoi ne pas recréer la variable complète. Tu calcules sa partie entière avec le modulo et tu ajoutes la partie décimale (ou l'inverse en ajoutant que la partie décimales au résultat du modulo)
sinon toucher a la variable comme sa me semble bien compliqué surtout que je devrais répété sa au moins une dizaine de fois et personnellement je ne sais pas comment on fait des arrondis dans se langage :E(..)?