detection symetrie axiale dans un polygone

detection symetrie axiale dans un polygone - C - Programmation

Marsh Posté le 11-04-2008 à 12:38:54    

Bonjour à tous, je suis actuellement en fin de projet informatique en C sur les polygones.
Je touche au but mais la dernière question est, je trouve, vraiment difficile...
Voila, je cherche à détecter dans un polygone non croisé et convexe la présence éventuelle d'un axe de symétrie.
S'il en existe plusieurs, je dois donner au minimum l'équation d'un axe.
Je travaille avec deux structure:

Code :
  1. typedef struct POINT {char *nom;
  2.                                float abscisse;
  3.                                float ordonnee;
  4.                                struct POINT *succ;} point;
  5. typedef struct DROITE {float a;float b;float c;} droite;


 
Voici les fonctions que j'ai déjà réalisé:

Code :
  1. //creer un point
  2. point *newp();
  3. //affiche les points
  4. void affichep(point *p);
  5. //creer une chaine de points
  6. point *chainep();
  7. //calcul du perimetre
  8. void perimetre(point *p);
  9. //calcul de l'aire à partir de la formule d'Héron
  10. void aire(point *p);
  11. //determine si les deux côtés s'intersectent et renvoie 1 si c'est le cas sinon renvoie 0;
  12. //côtéun=points un et deux; côtédeux=points trois et quatre
  13. int intersection(point *un,point *deux,point *trois,point *quatre);
  14. //si le polygone est croisé alors renvoie 1 sinon renvoie 0;
  15. int croise(point *p);
  16. //calcule l'angle entre p2p1 et p2p3
  17. float angle(point *p1,point *p2,point *p3);
  18. //determine si un angle est saillant (appartient a ]0;90[)
  19. float saillant(point *p1,point *p2,point *p3);
  20. //determine si un polygone est convexe:concave(1) si un seul angle est saillant, convexe(0) si tous les angles sont non saillants
  21. int convexite(point *p);
  22. //calcule le nombre de points du polygone
  23. int comptepoint(point *p);
  24. //resoud un systeme a deux inconnues
  25. point * equasolve(droite d1,droite d2);
  26. //donne le point d'intersection de deux mediatrices
  27. point * media_inter(point *p1,point *p2,point *p3);
  28. //determine si un point appartient a une droite
  29. int p_appartient(point *centre,point *p1,point *p2);
  30. //determine s'il existe le cercle circonscrit
  31. droite cercle_cir(point *p);
  32. //determine l'intersection de deux bissectrices
  33. point * bis_inter(point *un,point *deux,point *trois,point *quatre);
  34. //determine s'il existe le point de symetrie
  35. point * point_sym(point *p);


 
Merci de votre aide...
 
 
 
 
 
 

Reply

Marsh Posté le 11-04-2008 à 12:38:54   

Reply

Marsh Posté le 11-04-2008 à 13:40:07    

Bonjour,
 
S'il y a un axe de symetrie c'est forcemment la mediatrice de deux point de  ton polygone, tu dois donc tester si toutes les mediatrices faisables par l'ensemble des couples de points de ton polygone vérifient le fait qu'elles pourraient etre axe de symétrie (ou un truc dans le genre), attention tout de meme à prévoir une marge d'erreur due à la précision : quand tu as fixé une médiatrice et que tu recherches si l'image d'un point est dans ton polygone, il peut y avoir un petit écart.
 
Ton code m'intéresse beaucoup :D possible de me l'envoyer ? (si oui je te donne mon mail en mp)
 
J'ai aussi fait quelques travaux sur les polygones si ça t'interesse : http://peyo.lost-oasis.net/geomatique.php
 
Bon courage pour ton projet  [:augie]


Message édité par rengzehn le 11-04-2008 à 13:41:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed