Couleurs - Université Nice Sophia Antipolis
Couleurs - Université Nice Sophia Antipolis
Couleurs - Université Nice Sophia Antipolis
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Université de <strong>Nice</strong>-<strong>Sophia</strong> <strong>Antipolis</strong> vendredi 9 décembre 2011<br />
CIP2<br />
Durée: 1 mois<br />
Projet Java : <strong>Couleurs</strong><br />
Avant de commencer : la qualité des commentaires, avec notamment la présence des antécédents, des<br />
conséquents, des invariants de boucle, les rôles de chacune des fonctions, ainsi que les noms donnés aux<br />
variables, l’emploi à bon escient des majuscules et la bonne indentation rentreront pour une part importante<br />
dans l’appréciation du travail. Ce projet doit permettre de montrer votre autonomie et votre compréhension<br />
tant dans la conception du programme que dans sa réalisation. Enfin, si les codes de plusieurs projets se<br />
trouvent être identiques, ou être copiés depuis le web, tous les projets concernés seront immédiatement<br />
sanctionnés par un zéro.<br />
Description du problème<br />
Il existe plusieurs modèles de représentation pour afficher des couleurs sur un moniteur ou sur une imprimante.<br />
Ces modèles reposent sur des triplets de couleurs primaires.<br />
Modèle RGB le modèle RGB (pour Red, Green, Blue) est un modèle additif où chaque composant R,<br />
G ou B est un nombre entre 0 et 255 qui représente la quantité du composant à ajouter pour constituer la<br />
couleur.<br />
Modèle CMY L’autre modèle, utilisé par exemple pour afficher une couleur sur une imprimante, est le<br />
modèle soustractif CMY (pour Cyan, Magenta, Yellow), où l’ajout d’une couleur sombre soustrait de la<br />
lumière. Ce modèle est plus intuitif car c’est celui de la peinture classique. Par exemple, ajouter du jaune<br />
et du bleu donne du vert. Pour le modèle CMY, chaque composant C, Y ou M est le pourcentage nécessaire<br />
pour constituer la couleur. Il s’agit donc d’un nombre entre 0 et 100.<br />
Les systèmes RGB et CMY reposent sur des ensembles de couleurs complémentaires. Le Cyan est la couleur<br />
complémentaire du rouge dans le système RGB puisqu’il est obtenu par le triplet (R = 0,G = 255,B = 255)<br />
(et de même le Yellow est le complémentaire du bleu et le Magenta le complémentaire du vert). Ceci est<br />
illustré dans la figure 1.<br />
Figure 1 – Système de couleur additif RGB (à gauche) et soustractif CMY (à droite)<br />
1
Modèle CMYK Le modèle CMY ne permet pas en pratique de réaliser la couleur noire. Pour cela, les<br />
systèmes d’imprimerie utilisent un modèle dérivé, le modèle CMYK qui contient les trois composantes C,<br />
Y et M plus une composante K pour blacK. Pour simplifier, nous supposerons qu’une couleur du modèle<br />
CMYK est toujours obtenue à partir d’une couleur du modèle CMY de la façon suivante. Soit CMY une<br />
couleur du modèle CMY. Alors la couleur du modèle CMYK correspondante est C ′ Y ′ M ′ K où :<br />
K = min(C,Y,M)<br />
C ′ = C −K<br />
M ′ = M −K<br />
Y ′ = Y −K<br />
Conversion Une couleur CMY est obtenue à partir d’une couleur RGB par les formules suivantes :<br />
C = (255−R)/255<br />
M = (255−G)/255<br />
Y = (255−B)/255<br />
Travail à réaliser<br />
1. Vous devez écrire une hiérarchie de classes pour représenter les trois modèles de couleurs RGB, CMY et<br />
CMYK. Un modèle de couleur a un nom et une valeur de codage maximale (255 ou 100). Les couleurs<br />
du modèle CMYK sont toujours obtenues à partir d’une couleur du modèle CMY par les équations<br />
ci-dessus. On veut pouvoir afficher une couleur, additionner deux couleurs et calculer leur distance<br />
(une couleur peut être vue comme un point dans un espace à 3 dimensions). On veut aussi pouvoir<br />
convertir une couleur RGB en une couleur CMY (et réciproquement).<br />
2. Ensuite, on vous demande d’écrire une classe de test pour ces différentes fonctionnalités. Vous devez<br />
aussi créer dans la classe de test un tableau de 10 couleurs dont le modèle (i.e RGB, CMY ou CMYK)<br />
est choisi aléatoirement. Votre classe de test doit afficher tous les éléments de ce tableau.<br />
3. Écrivez un convertisseur graphique qui permet de saisir/afficher 3 paramètres RGB (dans des cases<br />
respectivement rouge, verte et bleue) et 3 paramètres CMY (dans des cases respectivement cyan,<br />
jaune et magenta). Un bouton “RGB to CMY” permet d’activer la conversion de RGB vers CMY et<br />
un bouton “CMY to RGB” permet d’activer la conversion inverse. Ce convertisseur affiche de plus un<br />
cercle dont la couleur est celle codée par les paramètres RGB.<br />
4. Pour terminer, vous donnerez une repésentation graphique en deux dimensions de la palette de couleurs<br />
de l’espace 3D RGB. LE déplacement de la souris sur votre palette devra visualiser la couleur<br />
sélectionnée dans le cercle précédent, ainsi que les intensités dans le systèmes RGB et CMY. Vous<br />
pouvez vous inspirer de l’applet donnée sur le site web des cip2, section algo-prog.<br />
5. Enfin, vous transformerez votre application en une applet.<br />
Remise du projet<br />
Votre projet est à faire en binôme intra-groupe et à rendre au plus tard :<br />
le mardi 10 janvier 2012 à 12h – aucun délai ne sera accordé –<br />
sous forme d’une archive couleurs.tar.gz que vous déposerez sur le site de dépôt de projets : entrepot.<br />
polytech.unice.fr.<br />
2
Attention : ce site gère la date limite de rendu. Après ce sera trop tard.<br />
Cette archive devra contenir :<br />
– les fichiers sources (.java) correctement documentés (chaque fonction doit avoir un commentaire, les<br />
invariants de boucle doivent être marqués), indenté, et codé (les noms de variables explicites, éviter les<br />
trop longues fonctions);<br />
– un fichier Documentation obligatoirement au format pdf, décrivant le fonctionnement général du programme,<br />
les algorithmes, ainsi que les choix de programmation.<br />
Pour en savoir plus<br />
http://pourpre.com/modeles/<br />
http://en.wikipedia.org/wiki/RGB_color_model<br />
http://en.wikipedia.org/wiki/CMYK_color_model<br />
3