Calcul d'angle

Fermé
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 - 11 mai 2003 à 11:46
 cyriltaz - 18 nov. 2009 à 15:59
Bijour tout le monde,
Je suis en train de coder un algo de calcul de trajectoire et je suis bloqué par un pb auquel je ne m'attendais pas, bon sang ! n'est ce point fou ?

Bref, j'ai trois A(xa,ya) B(xb,yb) C(xc,yc) (stockés dans une structure point_t{float x,y}.

Je cherche l'angle B (ABC quoi), mais je ne sais pas comment faire...

Des idées ? Allez, on se motive ;-)

Merci d'avance les gens

@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
A voir également:

15 réponses

esox_ch Messages postés 770 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 14 mars 2007 49
11 mai 2003 à 13:14
Ok si je me trompe pas, les fonctions mathematiques comprennent la foction : Cos(a) donc il suffi d'appliquer le theoreme du cosinus:
a^2=(b^2)+(c^2)-(2bc*cos(a))
a,b et c sont les segments de droite qui relient les points A,B et C.il suffis ensuite de jongler un peu avec la formule et on retrouvre l'angle...

Eternel Questionneur. Seul et Unique membre de la : SPdLM
=> Société Protectrice des Languages Maltraités
4
esox_ch Messages postés 770 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 14 mars 2007 49
12 mai 2003 à 17:31
D'accords, aufait pourriez vous m'expliquer, cher ami, comment entendez vous faire pour les vecteurs? Car je ne connais point les commandes qui permettent de faire des operations sur les vecteurs

Eternel Questionneur. Seul et Unique membre de la : SPdLM
=> Société Protectrice des Languages Maltraités
3
esox_ch Messages postés 770 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 14 mars 2007 49
11 mai 2003 à 13:31
Heu justel ,a b et c (comme dit en haut) c pas tes points mais les segments qui les relient...
Que ca marche sur triangle non rectangle : Oui

Eternel Questionneur. Seul et Unique membre de la : SPdLM
=> Société Protectrice des Languages Maltraités
2
Kopernicus Messages postés 58 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 3 juillet 2003 7
11 mai 2003 à 13:31
Bijour batmat

Le coef directeur est donné par la tangente de l'angle. Si les droite sont verticale, ce n'est qu'un cas particulier du cas général.
A++
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
esox_ch Messages postés 770 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 14 mars 2007 49
11 mai 2003 à 22:59
Ralala ce batman, d'abord il nous demande qqch de dur, apres il nous dit de nous motiver, et apres l'è meme pas contant du resultat parceque c fatiguant a faire ! Bein oui m'sieur! Et si tu trouve fatiguant de pianoter sur le clavier fo changer de job/hobby ;0)

Eternel Questionneur. Seul et Unique membre de la : SPdLM
=> Société Protectrice des Languages Maltraités
2
mai euh
2
en utilisant les Méthodes des sous espaces plus particulièrement MUSIC... se sont des algorithmes de DOA.
2
esox_ch Messages postés 770 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 14 mars 2007 49
11 mai 2003 à 11:56
Avec la trigo p-e?

Eternel Questionneur. Seul et Unique membre de la : SPdLM
=> Société Protectrice des Languages Maltraités
1
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
11 mai 2003 à 12:09
La trigo, ça marche avec des angles droits ... Là c'est pas forcément le cas ;-)
@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
1
La trigo, ça marche avec des angles droits ... Là c'est pas forcément le cas ;-) 



faudrait penser à suivre pendant les cours de maths...

utilisez le théorème du sinus c'est exactement ça qu'il faut:

[AB]/<C = [BC]/<a = [AC]/<b = 2r, où r est le rayon du cercle circonstrit
0
esox_ch Messages postés 770 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 14 mars 2007 49
11 mai 2003 à 12:17
oui je c ca, je penssais de faire faire en sorte qu'un angle droit se créé mais je crois que ca ne ferais que reporter le prob + loin, en tout cas j'y reflechi

Eternel Questionneur. Seul et Unique membre de la : SPdLM
=> Société Protectrice des Languages Maltraités
1
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
11 mai 2003 à 13:08
J'ai pensé à une solution avec le calcul des équations de droites et de différence de coef directeur...

Seulement, j'ai deux pbs :
1) je ne connais pas l'équivalence
"différence coef directeur" <=> angle
2) si ma droite est verticale (xa=xb par exemple, alors ya plus de notion d'équation de droite et chaipu koi faire ...

D'avance merci aux matheux ;-p
@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
1
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
11 mai 2003 à 13:18
1) La formule que tu donnes, je l'utilise de façon identique en x et en y ?
2) T'es sûr que ça marche pour des triangles non rectangles ?

@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
1
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
11 mai 2003 à 15:36
OK, j'ai compris : je viens de recevoir un mail d'un de mes anciens profs de maths. La formule de esox_ch, c'est le théorême d'Al Kashi.
Merci à tous, je devrais m'en sortir avec ça.

Toutefois, si qqn a une solution moins couteuse en temps, ça m'interesse qd même (je suis pas sur que le microcontroleur va apprécier de calculer des arccos à la pelle ;-)

@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
1
Salut batmat,

Tu dois normaliser tes vecteurs AB et CB. ie, diviser par la norme (en ayant préalablement effectuer une translation de tes vesteurs).

1. Xa' = (Xa - Xb)/Sqrt((Xa - Xb)^2 + (Ya - Yb)^2)
Ya' = (Ya - Yb)/Sqrt((Xa - Xb)^2 + (Ya - Yb)^2)
Xc' = (Xc - Xb)/Sqrt((Xc - Xb)^2 + (Yc - Yb)^2)
Yc' = (Yc - Yb)/Sqrt((Xc - Xb)^2 + (Yc - Yb)^2)

2. La valeur de ton angle est: Valeur absolue de (Cos^-1 (Xa') - Cos^-1 (Xc'))

:-)

Rien n'est plus dangereux qu'une idée quand on a qu'une idée.

Pascal
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
12 mai 2003 à 07:16
Vous n'y êtes pasmon cher :-)
Je tapote très vite maintenant que j'ai grandi ;-) Seulement, le pb concerne le microcontroleur qui doit réfléchir très vite...
J'ai de toute façon déjà commencé à coder l'algo comme ça. Ensuite, j'en coderai une autre version avec un truc sur le produit vectoriel qu'on vient de m'envoyer... Pis je comparerai.

Merki à tous ;op
@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
1
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
12 mai 2003 à 18:13
Raaaah, pour tout te dire ;-) J'ai déjà écrit une grande partie de l'algo qui calcule la trajectoire (par les courbes de bézier).

J'ai donc créé pleins de structures (point_t vecteur_t segment_t etc.) et écrit les opérations correspondantes.

(Rappel : le vecteur Vab a pour valeur en abscisse xb-xa et en ordonnée yb-ya)...

<vecteur(BA),vecteur(BC)> = AB*BC*cos(BA,BC)

En repere orthonormé, le produit scalaire et la norme se calculent facilement :

u(x,y) et v(x',y')
<u,v> = x.x'+y.y' et ||u|| = sqrt(x^2+y^2)

En plus, un CCMiens vient d'expliquer aussi cette partie.

@++
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
1