alexis0788 | 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 :
- typedef struct POINT {char *nom;
- float abscisse;
- float ordonnee;
- struct POINT *succ;} point;
- typedef struct DROITE {float a;float b;float c;} droite;
|
Voici les fonctions que j'ai déjà réalisé:
Code :
- //creer un point
- point *newp();
- //affiche les points
- void affichep(point *p);
- //creer une chaine de points
- point *chainep();
- //calcul du perimetre
- void perimetre(point *p);
- //calcul de l'aire à partir de la formule d'Héron
- void aire(point *p);
- //determine si les deux côtés s'intersectent et renvoie 1 si c'est le cas sinon renvoie 0;
- //côtéun=points un et deux; côtédeux=points trois et quatre
- int intersection(point *un,point *deux,point *trois,point *quatre);
- //si le polygone est croisé alors renvoie 1 sinon renvoie 0;
- int croise(point *p);
- //calcule l'angle entre p2p1 et p2p3
- float angle(point *p1,point *p2,point *p3);
- //determine si un angle est saillant (appartient a ]0;90[)
- float saillant(point *p1,point *p2,point *p3);
- //determine si un polygone est convexe:concave(1) si un seul angle est saillant, convexe(0) si tous les angles sont non saillants
- int convexite(point *p);
- //calcule le nombre de points du polygone
- int comptepoint(point *p);
- //resoud un systeme a deux inconnues
- point * equasolve(droite d1,droite d2);
- //donne le point d'intersection de deux mediatrices
- point * media_inter(point *p1,point *p2,point *p3);
- //determine si un point appartient a une droite
- int p_appartient(point *centre,point *p1,point *p2);
- //determine s'il existe le cercle circonscrit
- droite cercle_cir(point *p);
- //determine l'intersection de deux bissectrices
- point * bis_inter(point *un,point *deux,point *trois,point *quatre);
- //determine s'il existe le point de symetrie
- point * point_sym(point *p);
|
Merci de votre aide...
|