Transformer un vecteur normalisé en angle
Fermé
Albo
-
1 déc. 2013 à 13:59
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 1 déc. 2013 à 16:23
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 1 déc. 2013 à 16:23
A voir également:
- Transformer un vecteur normalisé en angle
- Transformer majuscule en minuscule word - Guide
- Transformer image en icone - Guide
- Transformer epub en kindle - Guide
- Rapporteur d'angle virtuel gratuit - Télécharger - Études & Formations
- Transformer un pdf en word gratuit - Guide
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 déc. 2013 à 14:34
1 déc. 2013 à 14:34
"Pas de formule mathématique avec des symboles, phi ou theta etc."
Quelle différence cela fait ? Ce ne sont que des lettres... sauf qu'en mathématiques on a des conventions, alors de même que tu ne vas pas remplacer (x,y) par (g,h), je ne vois pas pourquoi tu voudrais remplacer, pi, rho ou thêta, par autre chose...
Sinon je ne suis pas d'accord avec tes exemples. On devrait avoir :
Quelle différence cela fait ? Ce ne sont que des lettres... sauf qu'en mathématiques on a des conventions, alors de même que tu ne vas pas remplacer (x,y) par (g,h), je ne vois pas pourquoi tu voudrais remplacer, pi, rho ou thêta, par autre chose...
Sinon je ne suis pas d'accord avec tes exemples. On devrait avoir :
f(1,0)=0°, f(0,1)=90°, f(-1,0)=180°, f(0,-1)=270°Tu trouveras la formule dans Conversion entre système polaire et cartésien
Merci pour ta réponse !
" Sinon je ne suis pas d'accord avec tes exemples. On devrait avoir :
f(1,0)=0°, f(0,1)=90°, f(-1,0)=180°, f(0,-1)=270° "
Tout dépend de ce que tu souhaites faire.
Mon angle 0° part de la gauche de mon cercle et tourne dans le sens des aiguilles d'une montre. D'autre part le plan démarre du coin en haut à gauche, ce qui explique l'inversion des pôles sur l'axe y.
EDIT :
J'ai presque trouvé la solution. Mais ça plante pour f(-1,0)=180°.
void setup () {
float x=-1;
float y=0;
float radian=2*atan(y/(x+sqrt(pow(x,2)+pow(y,2))));
println(radian*(180/PI));
}
" Sinon je ne suis pas d'accord avec tes exemples. On devrait avoir :
f(1,0)=0°, f(0,1)=90°, f(-1,0)=180°, f(0,-1)=270° "
Tout dépend de ce que tu souhaites faire.
Mon angle 0° part de la gauche de mon cercle et tourne dans le sens des aiguilles d'une montre. D'autre part le plan démarre du coin en haut à gauche, ce qui explique l'inversion des pôles sur l'axe y.
EDIT :
J'ai presque trouvé la solution. Mais ça plante pour f(-1,0)=180°.
void setup () {
float x=-1;
float y=0;
float radian=2*atan(y/(x+sqrt(pow(x,2)+pow(y,2))));
println(radian*(180/PI));
}
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 déc. 2013 à 16:15
1 déc. 2013 à 16:15
"J'ai testé les calculs mathématique et je me retrouve avec des valeurs qui n'ont aucun sens pour moi."
Tu te retrouves probablement avec des valeurs en radians, c'est à dire qu'au lieu d'avoir 90° tu vas obtenir π/2=1.57, pour 180° π=3.14, etc. Il suffit de faire la conversion si tu les veux en degrés.
"Une formule toute simple f([x,y]) = angle, serait préférable pour ma logique."
Le problème c'est qu'il y a des cas particuliers, et que la trigonométrie ce n'est jamais simple...
La formule la plus directe c'est f(x,y) = 2*arctan(y / (x + √(x²+y²)))
Cependant si tes vecteurs sont effectivement normés, alors x²+y² vaut toujours 1 ce qui donne :
De plus là je te donne la formule sur le cercle trigonométrique, c'est à dire avec le 0 à droite, dans le sens inverse des aiguilles d'une montre. Maintenant si on se place dans ton cas particulier avec le zéro à gauche et dans le sens des aiguilles d'une montre alors il faut faire π-f(x,y) ce qui nous arrange vu que les résultats obtenus étaient entre -π et π et que maintenant ils seront donc toujours positifs.
Tu te retrouves probablement avec des valeurs en radians, c'est à dire qu'au lieu d'avoir 90° tu vas obtenir π/2=1.57, pour 180° π=3.14, etc. Il suffit de faire la conversion si tu les veux en degrés.
"Une formule toute simple f([x,y]) = angle, serait préférable pour ma logique."
Le problème c'est qu'il y a des cas particuliers, et que la trigonométrie ce n'est jamais simple...
La formule la plus directe c'est f(x,y) = 2*arctan(y / (x + √(x²+y²)))
Cependant si tes vecteurs sont effectivement normés, alors x²+y² vaut toujours 1 ce qui donne :
f(x,y) = 2*arctan(y / (x + 1))Le cas particulier pour cette formule c'est que tu dois avoir x différent de -1 (à cause de la division)
De plus là je te donne la formule sur le cercle trigonométrique, c'est à dire avec le 0 à droite, dans le sens inverse des aiguilles d'une montre. Maintenant si on se place dans ton cas particulier avec le zéro à gauche et dans le sens des aiguilles d'une montre alors il faut faire π-f(x,y) ce qui nous arrange vu que les résultats obtenus étaient entre -π et π et que maintenant ils seront donc toujours positifs.
f(x,y) = π - 2*arctan(y / (x + 1))Il ne reste plus qu'à faire la conversion en degrés :
f(x,y) = 180 - 360*arctan(y/(x + 1))/πRappel : on ne peux pas utiliser cette formule si x = -1
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 déc. 2013 à 16:23
1 déc. 2013 à 16:23
Tu le gères à part, tu n'as pas le choix.