PG208, Projet n 2 : Dessin vectoriel

Documents pareils
PG208, Projet n 3 : Serveur HTTP évolué

Réalisation de cartes vectorielles avec Word

Tp_chemins..doc. Dans la barre "arche 2" couleur claire 1/5 21/01/13

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS


TD : Codage des images

Formats d images. 1 Introduction

Initiation à linfographie

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

C f tracée ci- contre est la représentation graphique d une

Projet Matlab : un logiciel de cryptage

Nom : Groupe : Date : 1. Quels sont les deux types de dessins les plus utilisés en technologie?

DISQUE DUR. Figure 1 Disque dur ouvert

Prezi. Table des matières

Créer un premier document avec Pages

Adobe Illustrator Logiciel de dessin vectoriel et de Cartographie Assistée par Ordinateur

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Deux disques dans un carré

L espace de travail de Photoshop

Sommaire. Images Actives Logiciel libre développé par le CRDP de l académie de Versailles 2 Rue Pierre Bourdan Marly le Roi

Les algorithmes de base du graphisme

Correction des Travaux Pratiques Organiser son espace de travail

ou clic objet. R rouge B bleu : 65 Le fond votre travail en P :. d étoiles dupliquer. Esbly Page 1 / 5

INFO 2 : Traitement des images

2013 Pearson France Adobe Illustrator CC Adobe Press

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Epreuve écrite d admissibilité du Mercredi 15 Janvier 2014 DOSSIER REPONSE

My Custom Design ver.1.0

MANUEL TBI - INTERWRITE

Consigne : je remplis le tableau en tenant compte des informations de la ligne supérieure et de la colonne de gauche (droite pour les gauchers)

Développement itératif, évolutif et agile

Toute personne souhaitant maîtriser les techniques liées à la conception de produits multimédia et à la création de sites Web.

MEGA ITSM Accelerator. Guide de Démarrage

Correction : E = Soit E = -1,6. F = 12 Soit F = y = 11. et G = -2z + 4y G = 2 6 = 3 G = G =

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

Utilisation du logiciel GALAAD

Prise en main du logiciel. Smart BOARD Notebook 10

Générer du code à partir d une description de haut niveau

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Pop-Art façon Roy Liechtenstein

TP SIN Traitement d image

Angles orientés et trigonométrie

modélisation solide et dessin technique

TP : Suivi d'une réaction par spectrophotométrie

Introduction à l informatique en BCPST

Indications pour une progression au CM1 et au CM2

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

«Atelier de retouche d image, améliorez et optimisez

GESTION DU LOGO. 1. Comment gérer votre logo? Format de l image Dimensions de l image Taille de l image 9

L interface Outils, palettes, règles, repères, grille Paramétrer les préférences

Problèmes de dénombrement.

Cours de numérisation sur Epson Perfection

TUTORIAL Microsoft Project 2010 Fonctionalités de base

Manuel des bonnes pratiques avec CATIA V.5

PR OC E D U RE S D E B A S E

Fiches d aide à l utilisation

79140 CERIZAY. Collège G. CLEMENCEAU. Page 1 sur 18

Initiation à Excel. Frédéric Gava (MCF)

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

Comparer des surfaces suivant leur aire en utilisant leurs propriétés géométriques Découverte et manipulation

TP : Gestion d une image au format PGM

INFO 364 : Bases de Données Projet Professeur : Esteban Zimányi Assistants : Pierre Stadnik et Mohammed Minout Année Académique :

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Modules Multimédia PAO (Adobe)

Information utiles. webpage : Google+ : digiusto/

MEGA ITSM Accelerator. Guide de démarrage

Documentation Administrateur

Nom de l application

PRESENTATION DE L ACTIVITE

1 Création d une pièce. 2 Travail complémentaire. 1-1 Réglage des barres d outils. 1-2 Exemples de réalisation de pièces à l aide d un modeleur 3D

PHOTOSHOP - L'AFFICHAGE

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Optimisation, traitement d image et éclipse de Soleil

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

PRISE EN MAIN D ILLUSTRATOR

La C.A.O (Conception Assistée par Ordinateur). Le logiciel de C.A.O.

Le Dessin Technique.

Système à enseigner : Robot M.I.M.I. MultipodeIntelligent à Mobilité Interactive. Version 1.0

III- Raisonnement par récurrence

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

UML et les Bases de Données

SolidWorks edrawings et publications

Manuel d utilisation NETexcom

EVALUATIONS MI-PARCOURS CM2

Rappel sur les bases de données

EXERCICES DE REVISIONS MATHEMATIQUES CM2

Les formations de remise à niveau(!) l'entrée des licences scientifiques. Patrick Frétigné CIIU

Mise en scène d un modèle dans l espace 3D

Les TICE en cours de Mathématiques au collège. Quelques pistes de travail pour les classes de 6 ème, 5 ème et 4 ème

JPEG, PNG, PDF, CMJN, HTML, Préparez-vous à communiquer!

AMELIORATIONS DES FONCTIONNALITES DISPONIBLES

Fonctions de plusieurs variables

MAT2027 Activités sur Geogebra

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

TP1 : Initiation à l algorithmique (1 séance)

Transcription:

PG208, Projet n 2 : Dessin vectoriel Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif du projet est de mettre en œuvre les notions appréhendées durant l enseignement de de PG208. Durant cet enseignement vous avez normalement acquis les notions de base de la programmation orientée objets appliquées au langage C++. Le point de départ du projet est constitué du présent document. Ce dernier correspond au cahier des charges spécifié par le client (votre enseignant). Afin de mener à bien ce projet, vous allez devoir : lire le cahier des charges, identifier les besoins exprimés par le client, comprendre ce que vous devez développer, élaborer un modèle de solution, développer et mettre au point votre application. Pour mener à bien les quatre premières étapes, il vous est demandé de mettre en pratique les notion d UML vues en cours. Cela vous permettra de structurer vos idées et de les partager (avec votre binôme et votre enseignant). De plus, étant donné que le projet est un projet de conception objets, il vous est demandé dans les deux dernière étapes de mettre en œuvre les notions vues en cours (héritage, classes, polymorphisme, surcharge, etc.). 1.2 Déroulement du projet La durée estimée du projet est d environ 18 heures. Six séances de TP de 3 heures sont programmés dans votre emploi du temps. Toutefois, elles ne sont pas toutes encadrées : les 2 premières et les 2 dernières bertrand.legal(at)ims-bordeaux.fr serge.bouter(at)u-bordeaux1.fr clement.vuchener(at)inria.fr 1

séances sont encadrées tandis que les 2 séances intermédiaires sont planifiées mais se dérouleront sans encadrement. Le sujet du projet a été écrit de manière à prendre en considération les différences de niveaux entre les groupes. Pour cela le sujet du projet est écrit sous forme de cahier des charges à tiroir. Cette particularité vous permettra d avancer à votre rythme. 1.3 Évaluation de votre travail La notation du projet se basera sur : La qualité de l analyse du cahier des charges. Cette analyse doit être réalisée à l aide d UML. L utilisation adéquate des possibilités offertes par le langage C++ (héritage, surcharge,... ). Le respect des fonctionnalités spécifiées dans le cahier des charges. L évaluation du projet sera réalisée en deux parties : Lors d une présentation orale de votre projet. Dans un rapport papier détaillant le développement de votre application. Lors de la présentation orale de votre application, vous êtes en charge de présenter à votre enseignant (le client) l application développée. Cette présentation d une durée approximative de 10 minutes vise à démontrer au client que vous avez développé ce qu il vous a commandé. Pour cela, vous présenterez vos choix de conception, vous expliquerez les différentes étapes par lesquelles vous êtes passées et enfin une réaliserez démonstration des fonctionnalités de l outil (démonstration que vous aurez pris soin de préparer). En ce qui concerne le rapport écrit, une attention particulière sera portée à la présentation des choix d implantation que vous aurez réalisés lors de votre développement. Ces choix ainsi que votre cheminement devront être détaillés clairement à l aide du langage UML. De plus une analyse des avantages et inconvénients du langage C++ par rapport au langage C devra être réalisée. 2 Cahier des charges L objectif du projet est de développer une application permettant de générer d images (BITMAP) à l aide d une description vectorielle de des images. Cette application doit permettre de créer une image (fichier de type BMP) à partir d une description des formes géométriques la composant : un cercle de diamètre 3 et de couleur rouge placé aux coordonnées (6,8). Votre application devra supporter un nombre conséquent de formes géométriques de base afin de permettre le tracé d images complexes. L application à développer devra analyser un fichier textuel contenant la description des formes géométriques présentes sur l image a générer. Les différents éléments possèdent une taille, des coordonnées, 2

un facteur d échelle (pour permettre la gestion d un zoom) ainsi qu un coefficient de transparence. Dans un premier temps (afin de simplifier la mise en oeuvre d une première version fonctionnelle), nous supposerons que le facteur d échelle impact uniquement sur la taille des formes géométriques et sur leurs positions (pas sur les contours de objets). Lors du développement de l outil et tout particulièrement lors de la phase de modélisation des classes à mettre en œuvre vous réfléchirez aux types de données que vous allez manipuler avec pour objectif principal de développer des classes faciles d utilisation et intuitives (la contrainte de performance étant volontairement ignorée ici). De plus vous veillerez à bien analyser les liens qui peuvent exister entre les différentes classes afin de minimiser la taille du code à écrire et à maintenir. Votre outil sera exécuté en mode ligne de commande avec un passage des arguments lors de l appel du programme. Afin de simplifier l utilisation de l outil, nous partirons sur la convention suivante : Exemple d utilisation Programme.exe fichier_initial.vec fichier_final.bmp echelle Dans cet exemple : Le paramètre nommé fichier_initial.vec permet de spécifier le fichier qui contient la description des formes géométriques contenues dans l image. Le paramètre nommé fichier_final.bmp permet de spécifier le nom du fichier image que vous devez créer à partir du contenu du fichier fichier_initial.vec. Le paramètre nommé échelle permet de spécifier le niveau du zoom souhaité par l utilisateur. En cas d omission de ce paramètre, sa valeur par défaut sera 1. 2.1 Les formes géométriques de base L objectif du projet est de permettre la génération d images plus ou moins complexes à partir d une description des formes géométriques qui les composent. Pour cela, il est nécessaire de gérer au minimum les formes géométriques suivantes : Le Point : le point sera la forme géométrique la plus simple. En effet, la définition d un point pourrait se résulmer à paire de coordonnées (X, Y). La déclaration d un objet point dans le fichier d entrée sera faite de la manière suivante [POINT : X, Y, COULEUR, TRANSPARENCE ;] La Ligne : la ligne est un élément géométrique possédant 2 couples de coordonnées permettant de spécifier son point de départ et son point d arrivé (X 1, Y 1 ) et (X 2, Y 2 ). La déclaration d une ligne dans le fichier d entrée sera faite de la manière suivante : [LIGNE : X 1, Y 1, X 2, Y 2, COULEUR, TRANSPARENCE ;] Le Rectangle : le rectangle est une forme géométrique composée normalement de 4 coordonnées représentant chacun de ses sommets. Pour une plus grande facilité de programmation, nous définirons un Rectangle à l aide de sa coordonnée inférieure (la plus petite), sa longueur et sa hauteur. La déclaration d un rectangle dans le fichier d entrée sera faite de la manière suivante : [RECTANGLE : 3

centre ainsi que de la taille de son rayon. La déclaration d un cercle dans le fichier d entrée sera faite de la manière suivante : CERCLE: X, Y, RAYON, COULEUR, TRANSPARENCE; Pour l ensemble des 3 dernières formes géométriques nous posséderons 2 variantes permettant de colorer uniquement le contour de la forme ou bien la forme dans son ensemble. L exemple suivant présente la différence entre un Disque et un DisqueS. Figure : Résultat de l affichage d un Disque et d un DisqueS (disque plein) Figure 1 Résultat de l affichage d un Disque et d un DisqueS (disque plein) Pour l ensemble des formes géométriques, vous devrez considérer le facteur d échelle, spécifié à l appel du programme, point qui sera expliqué plus en détails dans la section suivante. Chaque forme X, Y, géométrique LONGUEUR, supportera HAUTEUR, l attribution COULEUR, d une couleur. TRANSPARENCE La couleur sera ;] spécifiée à l aide de mots clefs Le représentant Carré : le carré un assemblage est une forme des géométrique composantes composée rouge, vert normalement et bleu. de 4 coordonnées représentant De chacun plus afin de d autoriser ses sommets. la création Pour une de plus figures grande assez facilité complexe de programmation, vous prendrez en nous compte définirons un dernier un carré paramètre pouvant être facultatif dans la déclaration des formes géométriques et qui représentera le àniveau l aide de (plan sa coordonnée Z) ou se situe inférieure la forme (la plus par petite), rapport sa aux longueur autres. et Les saformes hauteur. géométriques La déclaration ne d un possédant carré dans pas lecette fichier information d entrée sera seront faiteconsidérées de la manière comme suivante appartenant : [CARRE à l arrière : X, Y, plan LONGUEUR, (z=0). L information liée aux plans permettra de connaître l ordre optimal de tracé des formes lors de la génération HAUTEUR, du rendu COULEUR, final. TRANSPARENCE ;] Le Cercle : le disque est une forme géométrique circulaire composée de la coordonnée de son centre Explications sur la notion d échelle : ainsi que de la taille de son rayon. La déclaration d un cercle dans le fichier d entrée sera faite de Le facteur d échelle que l on souhaite employer lors de la génération des images à partir de leur description la manièrevectorielle suivante : va [CERCLE permettre : X, de Y, choisir RAYON, la taille COULEUR, de l image TRANSPARENCE résultante. Le coefficient ;] va jouer le rôle de facteur de grossissement de l image. Les 3 dernières formes géométriques (rectangle, carré et cercle) posséderont des variantes. Ces variantes La figure suivante propose un exemple d une figure composée d un rectangle et d un disque. Celle nommées présentée respectivement à gauche a été (RectangleS, obtenues avec CarreS un facteur et CercleS) d échelle permettront de 1 et à droite de tracer avec un lefacteur contour d échelle de la forme de 2. ainsi que de colorer l intérieur de la forme. L exemple présenté dans la Figure 1 illustre la différence entre un Cercle et un CercleS. Pour l ensemble des formes géométriques, vous devrez considérer le facteur d échelle, spécifié à l appel du programme, point qui sera expliqué plus en détails dans la section suivante. Chaque forme géométrique supportera l attribution d une couleur. La couleur sera spécifiée à l aide de mots clefs représentant un assemblage des composantes rouge, vert et bleu. 3 De plus afin d autoriser la création de figures assez complexe vous prendrez en compte un dernier paramètre pouvant être facultatif dans la déclaration des formes géométriques et qui représentera le niveau (plan Z) ou se situe la forme par rapport aux autres. Les formes géométriques ne possédant pas cette information seront considérées comme appartenant à l arrière plan (z=0). L information liée aux plans permettra de connaître l ordre optimal de tracé des formes lors de la génération du rendu final. 2.2 Le facteur d échelle Le facteur d échelle que l on souhaite employer lors de la génération des images à partir de leur description vectorielle va permettre de choisir la taille de l image résultante. Le coefficient va jouer le rôle de facteur de grossissement de l image. La Figure 2 présente un exemple d une image composée d un rectangle et d un disque. L image de gauche a été obtenues avec un facteur d échelle fixé à la valeur 1 tandis que celle de droite a été obtenue 4

Projet sur la programmation orientée objets appliquée au langage C++ Bertrand LE GAL Figure : Exemples d une même figure obtenue avec un facteur d échelle 1 et 2. Figure 2 Exemples d une même figure obtenue avec un facteur d échelle 1 et 2 La première observation issue de ces 2 figures provient de la taille de l image qui est générée à partir d une description vectorielle. La taille de l image dépend des coordonnées maximales des avec objets un facteur la constituant. d échelle fixé à 2. Remarque La première : différence si vous le entre désirez, ces 2dans tracés un est premier liée à la temps, taillevous de l image pouvez générée ignorer à partir l augmentation d une description la largeur des lignes en fonction du facteur d'échelle. vectorielle. Cette dernière est multipliée par 2 pour l image de droite. En effet, la taille de l image dépend directement Objets fournis des coordonnées par votre maximales enseignant des objets : contenus dans l image à tracer. L objectif de votre projet est de réaliser une gestion des formes géométriques déclarées dans le fichier d entrée et de les afficher (dessiner) dans une image. Afin de simplifier votre développement 2.3votre Laenseignant gestionmet de à lavotre transparence disposition un ensemble de 4 classes écrites en C++ : CBitmap, CImage, CLigne et CPixel. L ensemble Dans les précédentes ces 4 classes partiesvous du sujet, permettra il est fait de mention créer une deimage transparence. vierge (toute En effet, blanche) afin de en permettre fonction la des dimensions que vous préciserez à la création d une instance de cet objet. Cette classe vous génération permettra d images aussi de complexe, lire et de il modifier est nécessaire les pixels de gérer contenus l ordre dans de l image superposition et finalement des formes de mémoriser géométrique ainsi le résultat que la transparence dans un fichier possible sur le des disque certaines dur. Voici formes. les fonctions réalisées par les différentes classes fournies : Dans le cadre du projet, nous nous limiterons a une gestion basique de la transparence des formes CBitmap, cette classe permet de charger ou sauvegarder à partir ou depuis le disque dur une géométriques. image au format Pour cela, BMP. a chaque Cette classe formenécessite géométrique afin possèdera travailler unune facteur image deau transparence. format CImage. Cette information CImage, spécifiéecette dansclasse le fichier modélise décrivant une lesimage formesen géométriques couleurs dont utilisées la longueur dans l image, et la largeur sera unesont valeur entière spécifiées compriseà entre la construction 0 et 100. Par de convention, l objet. Cette la valeur classe 0fournie signifiera un que certain l objet nombre est invisible de méthodes tandis que permettant d accéder aux CPixel composants l image. la valeur 100 signifiera qu il est opaque. CLigne, cette classe est utilisée dans la classe CImage afin de réaliser la gestion de l image sur Le les facteur 2 dimensions de transparence (une image impactera est une uniquement colonne composée lors dude tracé lignes). et ducette remplissage classe peut des être formes utilisée géométriques dans votre image. La valeur du pixel résultant du tracé d une forme géométrique possédant un dans certains cas afin d accélérer l accès aux objets de type CPixel. CPixel, cette classe est responsable de la modélisation d un point de l image. Cette classe stocke facteur de transparence est fourni dans l équation suivante : les informations relatives à la couleur d un point de l image. Liste des étapes : 1.Modélisation P ixel et analyse (100 transp) P ixel(x, y) + transp CouleurF orme (x, y) = de l application, décomposition 100des formes géométriques en entité(s) de niveau inférieur, réflexion sur la gestion de l affichage des données dans l image et sur les rapports entre formes géométriques. 3 Objets fournis par votre enseignant 2.Développement des différentes classes élémentaires permettant de définir toutes les formes géométriques et de les dessiner dans une image. L objectif de votre projet est de réaliser une gestion des formes géométriques déclarées dans le fichier d entrée et de les afficher (dessiner) dans une image. Afin de simplifier votre développement votre ensei- 4 gnant met à votre disposition un ensemble de 4 classes écrites en C++ : CBitmap, CImage, CLigne et 5

CPixel. L ensemble de ces 4 classes vous permettra de créer une image vierge (toute blanche) en fonction des dimensions que vous préciserez à la création d une instance de cet objet. Cette classe vous permettra aussi de lire et de modifier les pixels contenus dans l image et finalement de mémoriser le résultat dans un fichier sur le disque dur. Voici les fonctions réalisées par les différentes classes fournies : CBitmap, cette classe permet de charger ou sauvegarder à partir ou depuis le disque dur une image au format BMP. Cette classe nécessite afin de travailler une image au format CImage. CImage, cette classe modélise une image en couleurs dont la longueur et la largeur sont spécifiées à la construction de l objet. Cette classe fournie un certain nombre de méthodes permettant d accéder aux CPixel composants l image. CLigne, cette classe est utilisée dans la classe CImage afin de réaliser la gestion de l image sur les 2 dimensions (une image est une colonne composée de lignes). Cette classe peut être utilisée dans certains cas afin d accélérer l accès aux objets de type CPixel. CPixel, cette classe est responsable de la modélisation d un point de l image. Cette classe stocke les informations relatives à la couleur d un point de l image. 4 Extensions envisageables Pour ceux qui trouveraient le sujet du projet trop court, il est possible de rajouter à ce dernier une dimension graphique. Cette partie ne doit être considérée que si vous avez terminé proprement la première partie (développement de l application avec une interface de type terminal). Afin d améliorer l ergonomie de l outil, on peut souhaiter lui adjoindre une interface graphique. Afin de développer de telles interfaces en C++, il existe la bibliothèque QT de Trolltech qui propose un certain nombre d objets graphiques facilement utilisables. La bibliothèque QT est multi-plateforme et libre de droits pour des projets personnels. A l heure actuelle elle doit être installée par défaut sur les environnement Linux de l ENSEIRB. Vous trouverez des tutoriaux pouvant vous aider dans le développement d une interface graphique pour l outil aux adresses suivantes : http://www.digitalfanatics.org/projects/qt_tutorial/index.html http://www.digitalfanatics.org/projects/qt_tutorial/chapter05.html http://www.digitalfanatics.org/projects/qt_tutorial/chapter06.html http://www.digitalfanatics.org/projects/qt_tutorial/chapter07.html 6