|
S. 5. Ecrire un programme pour créer des pavages
hyperboliques Escher. Le programme doit réaliser le pavage,
avec des triangles, du modèle circulaire; il doit dessiner,
dans chaque pavé, un motif que nous donnons dans un fichier
à part.
L'entrée du programme est constituée des éléments suivants
:
· Les angles du triangle de pavage. Les angles sont donnés
sous la forme ,
,
,
où p, q, r sont des nombres entiers positifs et

Le triangle de départ ABC doit être positionné de
telle façon que son sommet A soit au centre du modèle,
le sommet B doit se situer horizontalement à droite
(voire la figure).

· Le motif de pavage. Le motif est donné dans un fichier
d'image couleur, de format PPM. Les sommets du pavé sont
décrits par trois paires de coordonnées.
· La taille de l'image à réaliser et le nom du fichier
en sortie. L'image sera toujours de forme carrée, la taille
est donc donnée par un seul nombre entier positif m, au
maximum 2048.
Le programme doit lire les données en entrée dans l'ordre
suivant :
(nomprogramme) p q r motifpavage.ppm a1
a2
b1
b2
c1
c2
output.ppm m (motifpavage.ppm et output.ppm seront naturellement
remplacés par d'autres noms de fichiers.)
Le programme doit créer, en utilisant les données en entrée,
l'image de type PPM. Au cours du dessin du motif, il doit
travailler avec la méthode de coordonnées de centre de masse.
(10 points)
Ce qu'il faut savoir du format PPM
L'entrée et la sortie du programme est un fichier couleur,
binaire, de type PPM, sa taille est au maximum 2048×2048.
Entête (header)
Le fichier commence par l'entête. Elle est composée de
4 données :
· Le mot "P6" , situé au deux premiers bytes du fichier;
· La largeur et la hauteur de l'image;
· La valeur maximale des valeurs des couleurs (1--255).
Ces 4 données se suivent dans cet ordre, séparées par des
caractères espaces, saut de ligne (CR, LF) et TAB. L'entête
peut contenir aussi des remarques. La remarque peut débuter
n'importe où, son premier caractère est toujours # et sa
fin est la fin de la ligne. La fin de l'entête est le premier
caractère LF situé après la dernière donnée de l'entête.
Donnée binaire
L'entête est suivie par les données des pixels. Les pixels
se suivent par ligne, de haut en bas et de gauche à droite.
Chaque pixel est composé de 3 bytes, contenant les valeurs
rouge (R), vert (G), et bleu (B).
|