[Résolu] algorythme et géometrie

Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
lolo92
Messages: 4
Enregistré le: 11 Nov 2012, 14:48

[Résolu] algorythme et géometrie

par lolo92 » 11 Nov 2012, 15:05

Bonjour, je ne sais pas si je suis dans le bon endroit du forum mais je rencontre un petit problème avec mes maths du lycée..

Je code un morceau de programme qui va, à partir d'un segment AB, dessiner un polygone dont les cotés seront à une distance d du segment.

Je calcule mon vecteur directeur, pas de pb.
Je calcule celui de la droite perpendiculaire a=-1/a, c'est bon (désolé c'est une affectation)

Je calcule l'équation de la droite qui passe en A et perpendiculaire, pas de pb, idem pour B.

Ensuite, je pars du principe que mes points sont sur la droite calculée qui passe en A à une distance d.
Donc d=racine(carre(Xa-X)+carre(Ya-Y)).

Je résouds mon équation et là, surprise, je tombe sur des valeurs incohérentes.
mon équation :
0= carre(X)*(1+carre(a))+x*(2*b*a-2*Xa-2*Ya)+carre(Xa)-2*b*Ya+carre(Ya)-carre(d)
A=1+carre(a)
B=2*b*a-2*Xa-2*Ya
C=)-2*b*Ya+carre(Ya)-carre(d)

discriminant : carre(B)-4*A*C
X1= (-B-racine(discriminant))/2a
X2= (-B+racine(discriminant))/2a

et je tombe sur deux valeurs mais qui ne sont pas cohérentes (à une distance largement supérieure).

je ne sais plus quoi faire. Me suis je trompé quelque part ?

Merci



Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 11 Nov 2012, 15:16

Bonjour,
Pouvez-vous me dire si il s'agit d'un exercice, dont l'énoncé est précis, donc la réponse attendue est précise, ou s'il s'agit de calculer un polygone parallèle à un polygone donné.
Dans le second cas, je pourrai vous guider efficacement.

lolo92
Messages: 4
Enregistré le: 11 Nov 2012, 14:48

par lolo92 » 11 Nov 2012, 15:20

Dlzlogic a écrit:Bonjour,
Pouvez-vous me dire si il s'agit d'un exercice, dont l'énoncé est précis, donc la réponse attendue est précise, ou s'il s'agit de calculer un polygone parallèle à un polygone donné.
Dans le second cas, je pourrai vous guider efficacement.



Bonjour, il s'agit de calculer un polygone parallèe à un segment, dont les cotés sont à distance d du segment. Je suis très preneur d'une solution car c'est un peu la lutte depuis beaucoup d'heures ;-)

Cordialment, Laurent.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 11 Nov 2012, 15:56

Bon, il s'agit en fait d'une opération assez difficile dans le cas général.
Il y a des étapes différentes.
1- pour un segment, calculer un parallèle. Dans votre cas, la parallèle est définie par une distance orientée par rapport au segment.
Ce nouveau segment est défini par les points C et D
Soient les points A et B,
On calcule rap=dec/dist(A,B)
XC = xA+(yB-yA)*rap;
YC = YA+(xB-xA)*rap;
Même chose pour XD et YD, dans l'autre sens.
Ca c'est facile, ça marche toujours.

2- Maintenant il faut calculer l'intersection des 2 droites pour trouver le sommet du polygone cherché.
En matière de géométrie informatique, l'intersection est l'une des fonctions qui pose le plus de difficulté. Dans votre cas, l'équation à résoudre est du premier degré, donc pas de discriminant.
Les valeurs vx12 ... sont les différences de coordonnées des points, après une translation sur le point p11, ce qui fait que vx11=vy11=0
deter=(vy12)*(vx22-vx21)-(vy22-vy21)*(vx12);
aa=(vx22*vy21) - (vx21*vy22);
xp =aa*vx12/deter;
yp =aa*vy12/deter;
xp =x11+xp;
yp =y11+yp;

Tout va bien si deter est (naturellement non nul) mais surtout suffisamment grand pour avoir une bonne précision. Ce qui implique que dans la pratiques de nombreux tests doivent être faits (ma fonction a 150 lignes).
Enfin, il peut arriver que l'opération de calcul d'une parallèle fabrique de "noeuds papillons".
Voila.

lolo92
Messages: 4
Enregistré le: 11 Nov 2012, 14:48

par lolo92 » 11 Nov 2012, 16:13

Je n'ai pas tout compris, mais je vais explorer cette solution.
Qu'est ce que rap et dec ?
en tout cas, merci déjà pour la réponse.

Je cherche aussi à comprendre là ou je me suis trompé dans mon raisonement précédent.

Dlzlogic a écrit:Bon, il s'agit en fait d'une opération assez difficile dans le cas général.
Il y a des étapes différentes.
1- pour un segment, calculer un parallèle. Dans votre cas, la parallèle est définie par une distance orientée par rapport au segment.
Ce nouveau segment est défini par les points C et D
Soient les points A et B,
On calcule rap=dec/dist(A,B)
XC = xA+(yB-yA)*rap;
YC = YA+(xB-xA)*rap;
Même chose pour XD et YD, dans l'autre sens.
Ca c'est facile, ça marche toujours.

2- Maintenant il faut calculer l'intersection des 2 droites pour trouver le sommet du polygone cherché.
En matière de géométrie informatique, l'intersection est l'une des fonctions qui pose le plus de difficulté. Dans votre cas, l'équation à résoudre est du premier degré, donc pas de discriminant.
Les valeurs vx12 ... sont les différences de coordonnées des points, après une translation sur le point p11, ce qui fait que vx11=vy11=0
deter=(vy12)*(vx22-vx21)-(vy22-vy21)*(vx12);
aa=(vx22*vy21) - (vx21*vy22);
xp =aa*vx12/deter;
yp =aa*vy12/deter;
xp =x11+xp;
yp =y11+yp;

Tout va bien si deter est (naturellement non nul) mais surtout suffisamment grand pour avoir une bonne précision. Ce qui implique que dans la pratiques de nombreux tests doivent être faits (ma fonction a 150 lignes).
Enfin, il peut arriver que l'opération de calcul d'une parallèle fabrique de "noeuds papillons".
Voila.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 11 Nov 2012, 16:38

Dec, c'est la distance entre les 2 segments.
Rap, c'est une valeurs correspondant au coefficient directeur.
Lorsqu'on fait de la géométrie en informatique, les méthodes apprises en géométrie analytique sont indispensables mais ne sont que des méthodes pour aboutir à la formule désirée.
Pour votre formule, il y a une certitude : à partir du point A un point sur une perpendiculaire à AB à une distance d (signée) est unique.
Il ne peut donc pas y avoir plus d'une solution.
Faites un dessin, pour calculer les 2 points parallèles à AB, il n'y a pas d'équation à résoudre.

lolo92
Messages: 4
Enregistré le: 11 Nov 2012, 14:48

résolu

par lolo92 » 12 Nov 2012, 14:04

bonjour, merci de votre prompte réponse et de votre temps,

j'ai insisté sur la version que j'avais entreprise et il s'agissait simplement d'une mauvaise retranscription du papier dans mon programme. Il me manquait un carre(b) dans mon C=...

Cela marche au poil, j'espère que la précision sera bonne, cela reste encore à valider.

Bien amicalement et en vous remerciant encore, Laurent

 

Retourner vers ✎✎ Lycée

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 55 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite