19.01.2015 Views

Couleurs - Université Nice Sophia Antipolis

Couleurs - Université Nice Sophia Antipolis

Couleurs - Université Nice Sophia Antipolis

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!