équation de second degres - Aide aux devoirs - Emploi & Etudes
Marsh Posté le 19-04-2016 à 17:40:30
Ce sujet a été déplacé de la catégorie Discussions vers la categorie Emploi & Etudes par Fdaniel
Marsh Posté le 20-04-2016 à 00:20:52
Il faut que tu te ramènes à une équation du second degré de la forme
Ax² + Bx + C = 0
Pour ça tu as juste besoin de développer tes deux carrés puis regrouper les termes X², X et constants.
Enfin regarde sur internet pour résoudre ce genre d'équation (avec des histoires de discriminants )
Marsh Posté le 20-04-2016 à 13:52:39
lipton36 a écrit : Il faut que tu te ramènes à une équation du second degré de la forme |
donc :
de
(A + xB)² + (C + xD)² = E²
je développe
A² + 2AxB + (xB)² + C² + 2CxD + (xD)² - E² = 0
je regroupe
(D+B)x² + (2AB + 2CD)x + (A² + C² - E²) = 0
Calcul du discriminant
Δ = (2AB + 2CD)² - 4(D+B)(A² + C² - E²)
Δ < 0 : pas de solution dans R
Δ = 0 : une solution = -b/2a
Δ > 0 : 2 solutions : x' =( −b + √Δ ) / 2a et x'' =( −b − √Δ ) / 2a.
Ca vous semble correct ?
Marsh Posté le 20-04-2016 à 16:15:26
ci-joint l'algorithme que j’essaye d’implémenter, détrminer si 2 cercles en mouvement se collisionnent et si oui a quel moment
Ca = (Cax, Cay) is the current position Likewise for circle B's centre: Cb = Ob + t*Db. Then you want to find t such that ||Ca - Cb|| = (ra + rb) where ra and rb are the radii of circles A and B respectively. Squaring both sides: From that you should get a quadratic polynomial that you can solve for t (if such a t exists). |
j'ai comme l'impression qu'il se plante à l'expand
||Ca-Cb||^2 = (ra+rb)^2
(Oax + t*Dax - Obx - t*Dbx)^2 + (Oay + t*Day - Oby - t*Dby)^2 = (ra + rb)^2
Je pensais que ca allait donner plustôt
(Oax + t*Dax - Obx + t*Dbx)^2 - 2(Oax + t*Dax - Obx + t*Dbx)(Oay + t*Day - Oby + t*Dby) + (Oay + t*Day - Oby + t*Dby)^2 = (ra + rb)^2
Marsh Posté le 20-04-2016 à 16:44:28
une IA a écrit : |
je regroupe
A = Oax - Obx
B = Dax + Dbx
C = Oay - Oby
D= Day + Dby
E = ra + rb;
ce qui nous donne
(A + tB)² - 2(A + tB)(C + tD) + (C + tD)² - E² = 0
Je développe
A² + 2AtB + tB² - 2AC - 2AtD - 2tBC - 2tBtD + C² + 2CtD + tD² - E² = 0
je factorise pour obtenir une forme ax² + bx + c =0
(B+D - 2BD)t² + (-2AD - 2BC + 2CD + 2AB)t + (A² - 2AC + C² -E²) = 0
Marsh Posté le 20-04-2016 à 16:51:32
ReplyMarsh Posté le 20-04-2016 à 17:07:15
ReplyMarsh Posté le 20-04-2016 à 17:18:27
Pour moi d'un part c'est bien - t*Dbx.
Attention à gauche c'est une norme euclidienne (double barre).
(pas un (x-y)²).
La condition d'intersection des deux cercles se traduisant en termes de distance.
Marsh Posté le 20-04-2016 à 19:00:32
Plus précisément la condition est que la distance entre leurs centres est inférieure ou égale à la somme de leurs rayons (ou alors que la distance entre les centres est supérieure à la différence des rayons dans le cas où l'un des cercles est intérieur à l'autre) ; ce qui me fait dire que ta situation de départ est celle de deux cercles extérieurs l'un à l'autre et que donc l'instant du contact est celui auquel il y a égalité.Tes deux cercles étant en mouvement rectiligne uniforme.
Marsh Posté le 21-04-2016 à 13:37:15
par contre il s'est bien gouré dans son développement non ?
||u - v||² = ||u||² - 2uv + ||v||²
Marsh Posté le 21-04-2016 à 13:47:24
Il n'a pas développé comme tu le penses : il développe ||Ca-Cb||^2 simplement à l'aide des coordonnées du vecteur Ca-Cb.
||u - v||² = ||u||² - 2uv + ||v||² : oui mais u et v étant des vecteurs et uv leur produit scalaire.
Marsh Posté le 21-04-2016 à 14:50:05
Il suffit de ne pas compliquer les choses ; on va te sauver :
Ca est un vecteur de coordonnées (Cax, Cay) avec Ca = Oa + t*Da , Oa étant la position de départ , t le temps et Da la vitesse vectorielle : Da =(Dax,Day) et Oa=(Oax,Oay)
Ceci donne donc : Cax=Oax + t*Dax (abscisses) et de même Cay=Oay + t*Day
De même Cb est un vecteur de coordonnées (Cbx, Cby) avec Cb = Ob + t*Db , Ob étant la position de départ , t le temps et Db la vitesse vectorielle : Db =(Dbx,Dby)
Ceci donne donc : Cbx=Obx + t*Dbx (abscisses) et de même Cby=Oby + t*Dby
Le vecteur Ca-Cb a donc comme coordonnées : (Cbx-Cax,Cby-Cay) soit : (Obx + t*Dbx-Oax - t*Dax , Oby + t*Dby-Oay - t*Day)
Le carré de la norme de ce vecteur est donc : ( Obx + t*Dbx-Oax - t*Dax )² + ( Oby + t*Dby-Oay - t*Day )²
Marsh Posté le 21-04-2016 à 14:50:44
Si quelque chose n'est pas clair dis le.
On peut aussi développer avec la formule que tu cites :
||Ca-Cb||² = Ca²+Cb²-2Ca.Cb = Cax²+Cay²+Cbx²+Cby²-2(CaxCbx+CayCby)
et on remplace...
d'autre part regarde bien : Cax²+Cay²+Cbx²+Cby²-2(CaxCbx+CayCby) = Cax²+Cbx²-2CaxCbx +Cay² + Cby² -2CayCby = (Cax-Cbx)² + (Cay-Cby)² = ||Cb-Ca||²=||Ca-Cb||² ce qui donne bien la même chose.
Marsh Posté le 21-04-2016 à 15:04:36
je viens de comprendre une de mes incompréhensions,
au passage de (Cbx-Cax,Cby-Cay) soit : (Obx + t*Dbx-Oax - t*Dax , Oby + t*Dby-Oay - t*Day)
-Cax = -(Oax + t*Dax) = -Oax -t*Dax
J'ai vraiment du mal à penser en ensemble, la que tu scinde clairement X, et Y avant de les regrouper me parait vachement plus simple
je reprends ma fonction de prédiction de collision et reviens ..
Marsh Posté le 21-04-2016 à 15:07:49
Il faut que tu revois un peu le calcul en base orthonormale : coordonnées de points , de vecteurs , norme et produit scalaire.
Tu n'avais pas trop en tête que Ca et Cb sont des vecteurs d'un espace de dimension 2.
Marsh Posté le 21-04-2016 à 15:32:23
Gato66 a écrit : |
je regroupe
A = Obx - Oax |
Comme la formule du dessus est inferieur ou égale a la somme des radiants en cas de collision
E = ra + rb; |
ca nous donne
|
calcul du discriminant
|
Petit Test
je prends
|
et pourtant
ca me donne un
Δ = (2(0 - 0) + 2( 0 - 100)(1 + 1)) ² - 4(0 - 0 * (1 +1))(0 - 0)² + (0 - 100)² - (0 + 0)² = -400² = 80000 |
Δ positif => 2 réponses (ca commence mal)
t' = 170,711 |
Fail
Marsh Posté le 21-04-2016 à 16:21:53
au cas ou ou que ce soit une erreur de code
Code :
|
Marsh Posté le 21-04-2016 à 16:30:51
Toi refaire même erreur :
(A + tB)² + (C + tD)² - E² = 0
A² + 2AtB + t²B² + C² + 2CtD + t²D² - E² = 0
(B²+D²)t² + (2AB + 2CD)t + (A² + C² - E²) = 0
C'est quel langage ?
Marsh Posté le 22-04-2016 à 10:32:04
en effet avec
(tB)² => t²B²
ca marche !!
merci beaucoup Gato66
je rédige la réponse avec le code associé et publie ici
Marsh Posté le 22-04-2016 à 10:39:49
En ayant en tête que tes cercles doivent être extérieurs l'un à l'autre ; pour moi si l'un est intérieur à l'autre tu auras comme valeur de t celle où ils sont tangents extérieurement , instant qui arrive après une tangence intérieure.
Marsh Posté le 04-05-2016 à 15:18:07
Gato66 a écrit : C'était dans quel contexte ce truc ? |
c’était pour de l'art génératif.
j'empile des contraintes sur un ensemble de cercle autonome se déplaçant sur un plan 2D .
et regarde comment cela se comporte.
Ensuite j'essaye cela IRL avec des danseurs/danseuses.
et la c'était pour les contraintes "éviter/provoquer le contact"
Marsh Posté le 04-05-2016 à 15:29:33
S'il y a n cercles à surveiller ça fait donc n(n-1)/2 tests à faire.
Avec une prog du genre :
For i=1 to n-1
For j=i+1 to n
...
Marsh Posté le 19-04-2016 à 17:03:15
Bonjour,
j'ai tout d'un coup besoin de math et me voila coincé face a une équation du second degrés ...
je doit trouver x les autres variables sont connues
(a + x * b)² + (c + x * d) ² = e ²
j'ai de vagues souvenirs de 3em avec des histoires de discriminants,
mais je n'arrive tout de même pas à résoudre cette équation
la loose