Envoyé par
MOH BEN
... Soit un polygone non aplati dont les coordonnées de ses sommées sont toutes entières et toutes ses arêtes sont horizontales ou verticales.
Le polygone sur plan est défini par un point initial et une trajectoire (chaine de caractères) constituée d’une suite des quatre caractères suivants : − g : avancer d’une unité à gauche − d : avancer d’une unité à droite − h : avancer d’une unité vers le haut − b : avancer d’une unité vers le bas .
1. Ecrire une fonction estApplati qui détermine si un polygone est non aplati. Un polygone est non aplati, s’il n’existe pas parmi ses arêtes deux qui sont identiques.
C'est quand même plus clair !
Le polygone étudié est une ligne brisée fermée ne comportant que des angles droits (ou plats).
Le parcours ainsi défini revenant à son point de départ, on dénombre sur un tour des nombres égaux de déplacements en sens opposés; d'oùpar conséquent:
Ng = Nd (pour les déplacements horizontaux) et Nh = Nb (pout des déplacements verticaux) .
Comme seuls comptent pour le repérage des sommets les changements de direction à angle droit, toute arête correspond à une séquence de symboles identiques; ainsi
# <xhhhy> (avec h ≠ x et y) représente une arête verticale (ascendante) de longueur 3 ,
# <xdy> (avec d ≠ x et y) représente une arête horizontale (orientée vers la droite) de longueur 1 .
Il va donc falloir repérer et mesurer toutes les séquences présentes, afin que la vérification soit possible.
MatLab présente sans doute des outils spécifiques pour le maniement des chaînes de caractères.
Exemple:le parcours fermé (ABCDEFA) est décrit par la chaîne:
'
bddbbbdddddhhhhggggggg'.
On a ici: Nb = Nh = 4 , Nd = Ng = 7 ; il s'agit des dimensions du rectangle circonscrit au polygone.
Il suffit, après avoir établi un histogramme des distances de largeur totale Dmax = Max(Nh, Nd), de s'assurer que chacune des valeurs ne dépasse pas l'unité.
Partager