Math Trigo- Point commun de Vecteurs

jeanbb Messages postés 2 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 29 octobre 2004 - 27 oct. 2004 à 17:06
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 29 oct. 2004 à 22:54
Bonjour,

J'ai des objects qui se déplacent à l'aide de vecteurs dans un plan cartésien.

je cherche une formule pour savoir si mes vecteurs ou droites se rencontre. Si oui, sur quel point.

Exemple la droite AB (7,2)-(3,9) et la droite CD(3,4)-(10,8) se rencontre. Comment trouver leur point commun ?

Merci à tous

Attention, je suis pas expert en math !

Jean

13 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
27 oct. 2004 à 17:22
sur le meme plan, si les 2 vecteurs directeurs sont de directions differentes les droites se rencontrent

tu as 2 droites donc un systeme 2 equations 2 inconnues (x,y du points rechercher)

mais je crois qu'il y a plus simple...
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
27 oct. 2004 à 17:30
De toutes façon, la seule chose qu'on sache bien faire en math appli, c'est résoudre des systemes linéaires !
ton probleme se ramene à ça.
la, tu as un systeme de 2 eq à 2 inconnues, pour pas te prendre la tete, utilise les formules de Cramer, tu trouveras facilement en googlant.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
27 oct. 2004 à 18:49
djl, ton systeme ne marche pas dans tous les cas: si une des droites est verticale, elle n'aura pas ded coef. directeur (infini).

Je te conseille a priori les vecteurs. ca marche dans toutes les directions. Mais je ne vois qd meme pas coment faire.
Vais réfléchir un peu la dessus.Ca m'occupera
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
27 oct. 2004 à 19:28
si ca marche, si la droite est 'verticale' sont equation est du type x=n, c'est tout

le systeme est alors encore plus simple à resoudre mais ca fais un cas particuleir en plus, donc tu as entierement raison de conseiller les vecteurs
0

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

Posez votre question
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
27 oct. 2004 à 20:12
une équation de droite, c'est de la forme ax + by + c = 0, ça inclu droite verticale.
Les formules de Cramer fonctionnent quel que soit le cas. Sauf si le determinant est nul bien sur. En dimension 2, 3, c'est correct, au dela, il faut utiliser une autre méthode, directe ou itérative.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
27 oct. 2004 à 21:15
tres juste.
en term on est habitués a la forme y=ax.b, alors forcément...
Je connais pas ces formules, j'irai googler un de ces 4...
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
27 oct. 2004 à 21:16
dsl, c'est y=ax PLUS b
:D
0
jeanbb Messages postés 2 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 29 octobre 2004
29 oct. 2004 à 18:39
J'ai pensé à mon problème toute la nuit et j'ai eu une idée.
je ne sais pas si ca fonctionne, je n'ai pas testé.

1- Faire une rotation de la droite AB sur le point A pour l'aligner sur l'axe x.
Pour trouver le nouveau point B2: on calcul la longueur de la droite avec pythagore. Donc B2(x, y) = (Ax + longueur de AB, Ay)

2 - Évaluer la rotation avec les points B et B2

3 - Appliquer la rotation par rapport au point A sur la droite CD
4 - Puisque la droite AB est maintenant aligné sur l'axe x au point A, on connait la valeur de Y du point de rencontre (?X, AY). Reste à trouver ?x avec y ax+b dont la valeur devrait être comprise entre [Ax, B2x].

5 - On trouve la pente dy/dx des points C2 et le point de recontre. On applique cette pente au point C avant la rotation,
ce qui devrait donner le point de rencontre réel.

c'est claire ?!?
Et bien, qu'est-ce que vous en pensé ?

Jean
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
29 oct. 2004 à 18:54
suffit pas que ca marche, faut aussi que ce soit rapide si tu veux faire du temps reel

la à vu de nez ca à l'aire nettement plus lent que ce qu'on ta proposée
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
29 oct. 2004 à 22:01
je suis d'accors, mais c'est pas ca qui va faire passer son prog de 120 à 3 FPS, surtout que c'et de la 2D...
Jean, ton truc devrait marcher, mais...pour moi plus c'est simple moins ca a de chances de planter... je suis en trein de faire qques recherches, je reposterai plus tard.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
29 oct. 2004 à 22:06
http://www.lombardf.com/~jean-eloi/pri/2nd1/maths/equation_droite.html

Tu as ta réponse ici. c'est pas du tout cuit, il faudra chercher un peu, mais ya tout ce dont tu as besoin.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
29 oct. 2004 à 22:52
Soient 2 lignes, (AB) et (CD), définies par les points
A(A.x,A.y) ;
B(B.x,B.y) ;
C(C.x,C.y) ;
D(D.x,D.y) ;

(avec une struct Vecteur2d avec tous les opérateurs surchargés ca ira mieux, cf sources de kirua)

eqAB : (B.x-A.x)(y-A.y)-(B.y-A.y)(x-A.x)=0
càd :
eqAB : y*(B.x-A.x)-x*(B.y-A.y)-A.y*(B.x-A.x)+A.x*(B.y-A.y)=0
(vérifie ca ;) )

et
eqCD : y*(D.x-c.x)-x*(D.y-C.y)-C.y*(D.x-C.x)+C.x*(D.y-C.y)=0

maintenant il faut résoudre le systeme :

| y*(B.x-A.x)-x*(B.y-A.y)-A.y*(B.x-A.x)+A.x*(B.y-A.y)=0
| y*(D.x-C.x)-x*(D.y-C.y)-C.y*(D.x-C.x)+C.x*(D.y-C.y)=0

pour plus de simplicité on va faire dABx =B.x-A.x, ect., et fAB=-A.y*(B.x-A.x)+A.x*(B.y-A.y), etc., soit :

| y* dABx -x* dABy +fAB =0
| y* dCDx -x* dCDy +fCD =0

tu résoud ca, ce qui fait, si je ne me suis pas gourré:

x=(-dABx*fCD + dCDx*fAB) / (dCD*dABy - dABx*dCDy)
Maintenant que tu as x, tu peux calculer y:
y=(-fAB+x*dABy)/dABx

et voila!!
vérifie tous les calculs, mais normalement c'est bon.
Avant de chercher le point d'intersection, tu dois vérifier que les droites ne sont pas paralleles:
Si ab'-a'b == 0 c'est qu'elles sont paralleles, et faut pas continuer (soit 1 soit une infinité de solutions)

ca fait donc:
if (-dABy*dCDx +dCDy*dABx == 0)
{test();}
else{...}

pouah, ca fait beaucoup ded maths tout ca, surtout en vacances et a 10h30.
ya surement un couille quelque part, dis moi si ca marche, moi je garde les papiers sur lesquels j'ai fait les calculs en attendant.

PS: j'ai une feuille entiere de calculs pour avoir la valeur de x!
j'espere que ca me servira a moi aussi un jour :D
La tu poura pas dire qu'on t'a pas aidé, hein ? mdr

bonne nuit

PS2: djl puisque t'es la j'en profite, tu pourrais pas aller voir ma question "sound()" sur le forum, je suis sur que tu sais ca ...merci;)
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
29 oct. 2004 à 22:54
dABx, etc. c'est pour optimiser un peu (ne pas avoir a tout calculer 36 fois) mais si ca t'embete t'as qu'à les remplacer dans toutes tes formules...
0
Rejoignez-nous