Un peu de math=>Dessiner un Rectangle!!
Forum Etudes / Travail : Un peu de math=>Dessiner un Rectangle!!
Bonjour tout le monde
Je galère depuis trop longtemps pour....dessiner un rectangle O_o! (faut dire que j'ai beaucoup perdu des maths de Terminales)
Voici donc...J'ai deux points...A et B...Dont je connais les coordonnées dans un repère Orthonormé (xa, ya, xb, yb)...J'ai également la distance qui sépare B du point C.
Le but est de déterminer les coordonnées de C en sachant que le point C est dessiné dans le sens trigonométrique...
Quelqu'un aurait-il une solution?
Merci d'avance
| Citation : C est dessiné dans le sens trigonométrique... |
J'ai du mal à comprendre le sens de cette phrase...(un point dans le sens trigo...)
Précise si [AB] est un côté, une diagonale, de même pour [BC] sinon on ne peut pas t'aider.
PS : ton but est de dessiner un rectangle, ou de calculer les coordonnées des points ?
Message édité par abel_b le 08-01-2008 à 18:34:37
Répondre à abel_b
Alors...Le but c'est effectivement de trouver les coordonnées des points...Pour ensuite dessiner le rectangle (c'est pour un TP consistant a imiter Paint avec OpenGL)
Ensuite...J'ai mes deux points dont les coordonnées sont connues, A et B. Avec ceux-ci, je peux tracer un segment représentant un coté du rectangle. A partir de là, j'ai deux sens pour orienter mon rectangle (donc pour placer le prochain point autrement dit C):
- Le sens trigonométrique (celui qui nous interresse et qui tourne dans le sens inverse a celui du mouvement des aiguilles d'une montres) auquel cas mes segments AB et BC formeront un angle de +90°
- Le sens rétrograde auquel cas mes segments AB et BC formeront un angle de -90°
Les deux étant dans un repère en coordonnées polaire.
Pour avoir les coordonnées de C, j'suis sur que ce sont des broutille de trigo et une translation à la noix pour les avoir dans le repère orthormé...La translation, ça devrait aller...Mais les broutilles trigo là...XD (Ca fait deux ans que j'ai plus fait de maths XD)
Ok car à dessiner sur papier ca prend 2 secondes avec un compas et une regle.
Utilisons le prouit scalaire !
BC.BA=0 donc
(xc-xb)(xb-xa)+(yc-yb)(yb-ya) = 0 donc
(xc-xb)²(xb-xa)²=(yc-yb)²(yb-ya)² or
(xc-xb)²+(yc-yb)²=d² (d est la distance BC que tu connais)
- Donc, on peut remplacer (xc-xb)² dans l'une des équation et en déduire les valeurs possibles pour yc-yb
on en déduit donc les valeurs possibles pour (xc-xb)
- Ensuite, il faut les injecter dans les équations de départ (avant que j'élève au carré) pour éliminer les solutions qui ne marchent pas
- Il te restera 2 points : celui du sens trigo et celui du sens horaire...apres je ne sais pas quels sont tes critères de selection...
Répondre à abel_b
Ce sujet a été déplacé de la catégorie Discussions-Generales vers la catégorie Etudes / Travail par HaKaN@idn
Répondre à HaKaN@idn
Ok, merci pour ta patience abel_b...
J'ai étudié ta solution...Qui ne m'a pas convaincu des masses...
Tu dis qu'on utilise le produit scalaire...On aura donc bien:
BC.BA=0
Mais c'est la ligne suivante qui me perturbe. En effet, un produit scalaire est défini comme suit:
BC.BA = |BC| * |BA| * cos(angle(BC.BA))
Ici, si le produit scalaire de BC par BA est égal a 0, ce n'est pas du tout à cause de la nullité du produit des normes des deux vecteurs mais bien a cause de la nullité du cosinus de l'angle entre ces même vecteurs (puisque cos(PI/2) = 0)
Pour revenir à l'astuce, j'ai trouvé un truc (effectivement bidon) en farfouillant les cours de trigonométrie.
En coordonnées polaire, si je prend B comme centre d'un repère polaire fictif, je peux connaitre le cosinus et le sinus de l'angle que fait AB par rapport à l'horizontale grâce à ceci:
xa = r*cos(angle)
ya = r*sin(angle)
En magouillant un brin ces formules on obtient facilement:
angle = atan(ya/xa).
A partir de là, je prend l'angle trouvé et je soustrait un angle de 90° (soit PI/2) et je refais les démache inverse pour trouver les coordonnées de C:
xc = hauteur * cos(angle - PI/2)
yc = hauteur * sin(angle - PI/2)
Pour le moment ça semble plus ou moins fonctionner pour une orientation de AB par rapport à l'horizontale égale à 0°, 90° et 270°.
Pour l'angle de 180°, j'ai des soucis de limitation du type surement puisque j'obtiens un angle de "-0" radians (ce qui est un peu ridicule XD)
Pour les autres angles, le "90°" semble louche...Mais je pense que le plus gros du boulot est fini et que j'ai juste dû faire une bourde quelques part (ou alors ce sont encore les opérations et leur arondi qui sont louche XD)
Merci quand même pour ton aide
@bientot
| Citation : En effet, un produit scalaire est défini comme suit:
|
Ceci n'est qu'une conséquence de l'application du produit scalaire dans un espace de dimension 2...
La définition d'un produit scalaire est beaucoup plus vaste, et il existe une infinité de produit scalaire sur IR²...dont le plus connu est celui que j'ai présenté...et qui vaut bien |BC| * |BA| * cos(angle(BC,BA)) si on veut en faire une interpértation géométrique.
Cependant, on ne va pas s'encombrer d'angles inutilement !!!
Dans le repère d'origine : (O,i,j)
A=(xa,ya)
B=(xb,yb)
etc...
- Une autre manière de voir les choses est de se placer dans le repère (A,k,l) où k est unitaire porté par AB et où l est un vecteur qui complète k en une base directe.
Dans ce repère :
A=(0,0)
B=(xb',0)
C=(xb',d) où d est la distance BC
D=(0,d)
Maintenant, il suffit de changer de repère tout simplement :
a = (i,AB) (l'angle)
cos(a)= (xb-xa)/||AB||
sin(a) = (xb-xa)/||AB||
La matrice de rotation entre la base initiale et l'autre base est :
|cos(a) -sin(a)|
|sin(a) cos(a) |
donc il te suffit de d'inverser cette matrice orthogonale, càd de la transposer, d'en déduire par multiplication matricielle les coordonnées des points dans le repère (A,i,j), puis de faire une translation de vecteur AO, pour avoir les coordonnées dans le repère d'origine...
Voilà !
Il y a 2310 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
