Commit 074436811ff1410c247cb1bb2308cdd6f24a07d0

Authored by Thorsieger
0 parents

first commit

ReadMe.md 0 → 100644
  1 +++ a/ReadMe.md
... ... @@ -0,0 +1,38 @@
  1 +# Transmission Image Multimédia : Thomas Mertz
  2 +
  3 +**TP** : Les représentations vectorielles, le format Postscript
  4 +
  5 +### Contenu
  6 +Vous trouverez 7 fichiers .ps correspondant aux différentes questions du TP. Il est possible de visualiser ces images à l'aide de ghostview par exemple.
  7 +
  8 + - Le premier fichier "toto.ps" correspond simplement à la prise en main du langage Postscript.
  9 + - Les fichiers "animal.ps" et "animal_procedure.ps" trace le même dessin, mais dans le second cas les procédures postscript sont utilisés.
  10 + - "carre_tournant.ps", "rosace.ps" et "tableau.ps" sont des fichiers utilisant des transformations affines (translation, rotation, homothétie ...)
  11 + - Enfin "echiquier.ps" utilise toutes les techniques vues précédemment pour créer les bases d'un échiquier.
  12 +
  13 +### Commentaires
  14 +##### Exercice 1 :
  15 +Pour qu'un objet soit correctement validé il est nécessaire soit de le **stroke** (tracé) soit **fill** (remplit).
  16 +
  17 +La commande **closepath** va relier le premier point au dernier point placé, ce qui permet de fermer la figure.
  18 +
  19 +Il est possible d'entourer l'image d'un cadre noir en placant créant un rectangle tout autour et en choisissant une épaisseur à l'aide de la commande **setlinewitdth**. (on peut s'assurer de la couleur noir du cadre avec la commande ***0 0 0 setrgbcolor***)
  20 +
  21 +Les commandes **lineto** et **rlineto** sont similaires (relier un point à un second donné en paramètre). La différence vient du calcul des coordonnées : la première est en valeur absolue (par rapport à la page), la seconde est relative au point précédemment placé.
  22 +
  23 +##### Exercice 2 :
  24 +Le dessin pour cet exercice (animal_procedure.ps) est réalisé en utilisant des procédures : création de cercle, de triangle. Le code est simplifié car ces fonctions ne demandent que quelques paramètres pour fonctionner (tel que les coordonnées des points). Elles pourront être réutilisées plus tard.
  25 +
  26 +##### Exercice 3 :
  27 +La commande **translate** permet de déplacer l'origine du repère sur l'image. Ma commande **rotate** fait tourner l'image autour de l'origine.
  28 +
  29 +L'image "rosace.ps" est réalisé en placant l'origine au centre du cercle et en tournant l'image pour y tracer un arc de cercle.
  30 +
  31 +Le fichier "carre_tournant.ps" est intéressant car en utilisant 2 procédures, des boucles, on crée un motif de plus en plus petit (commande **scale**).
  32 +
  33 +##### Exercice 4 :
  34 +Pour la réalisation d'un échiquier, j'ai créé une ligne sur deux des casses noires/blanches. Avant de retourner de 180° la page puis faire les lignes intermédiaires.
  35 +
  36 +Des procédures ont été créer pour placer des points et des tours sur l'échiquier. On se déplace tout d'abord sur la case souhaitée (**translate**) puis on trace un point (**cpawn**) ou une tour (**crook**) en précisant la couleur des pièces.
  37 +
  38 +Il aurait été intéressant de placer toutes les pièces sur l'échiquier, mais la création d'un symbole ressemblant n'est finalement pas si simple.
0 39 \ No newline at end of file
... ...
animal.ps 0 → 100644
  1 +++ a/animal.ps
... ... @@ -0,0 +1,69 @@
  1 +%chat%
  2 +
  3 +%oreille droite
  4 +gsave
  5 +227 470 moveto
  6 +30 50 rlineto
  7 +15 -25 rlineto
  8 +0.5 0 0 setrgbcolor
  9 +fill
  10 +
  11 +%oreille gauche
  12 +328 495 moveto
  13 +15 25 rlineto
  14 +30 -50 rlineto
  15 +fill
  16 +
  17 +%tete
  18 +4 setlinewidth
  19 +300 400 100 0 360 arc
  20 +stroke
  21 +
  22 +%nez
  23 +newpath
  24 +285 390 moveto
  25 +15 15 rlineto
  26 +15 -15 rlineto
  27 +closepath
  28 +1 0.75 0.796 setrgbcolor
  29 +fill
  30 +
  31 +%oeil gauche
  32 +1 setlinewidth
  33 +270 450 20 0 360 arc
  34 +0 0 0 setrgbcolor
  35 +stroke
  36 +270 450 2 0 360 arc
  37 +fill
  38 +
  39 +%oeil droit
  40 +330 450 20 0 360 arc
  41 +0 0 0 setrgbcolor
  42 +stroke
  43 +330 450 2 0 360 arc
  44 +fill
  45 +
  46 +grestore
  47 +
  48 +%moustaches
  49 +170 370 moveto
  50 +100 10 rlineto
  51 +170 390 moveto
  52 +100 0 rlineto
  53 +170 410 moveto
  54 +100 -10 rlineto
  55 +330 400 moveto
  56 +100 10 rlineto
  57 +330 390 moveto
  58 +100 0 rlineto
  59 +330 380 moveto
  60 +100 -10 rlineto
  61 +stroke
  62 +
  63 +
  64 +%bouche
  65 +newpath
  66 +300 380 60 -160 -20 arc
  67 +closepath
  68 +stroke
  69 +
... ...
animal_procedure.ps 0 → 100644
  1 +++ a/animal_procedure.ps
... ... @@ -0,0 +1,83 @@
  1 +%animal_procedure%
  2 +
  3 +/ccircle {
  4 + 0 360 arc
  5 + stroke
  6 +} def
  7 +
  8 +/ctriangle {
  9 + moveto
  10 + rlineto
  11 + rlineto
  12 + fill
  13 +} def
  14 +
  15 +/cligne {
  16 + moveto
  17 + rlineto
  18 + stroke
  19 +} def
  20 +
  21 +%yeux
  22 +/ceye {
  23 + gsave
  24 + 0 0 0 setrgbcolor
  25 + 1 setlinewidth
  26 + 2 copy
  27 + 20 ccircle
  28 + 2 0 360 arc
  29 + fill
  30 + grestore
  31 +} def
  32 +
  33 +/cmoustache {
  34 + 1 eq {
  35 + 170
  36 + /x exch def
  37 + 100 10 x 370 cligne
  38 + 100 0 x 390 cligne
  39 + 100 -10 x 410 cligne
  40 + }
  41 + {
  42 + 330
  43 + /x exch def
  44 + 100 10 x 400 cligne
  45 + 100 0 x 390 cligne
  46 + 100 -10 x 380 cligne
  47 + }ifelse
  48 +} def
  49 +
  50 +%yeux
  51 +330 450 ceye
  52 +270 450 ceye
  53 +
  54 +%moustaches
  55 +1 cmoustache
  56 +2 cmoustache
  57 +
  58 +%oreilles
  59 +gsave
  60 +0.5 0 0 setrgbcolor
  61 +15 -25 30 50 227 470 ctriangle
  62 +30 -50 15 25 328 495 ctriangle
  63 +grestore
  64 +
  65 +%nez
  66 +gsave
  67 +1 0.75 0.796 setrgbcolor
  68 +15 -15 15 15 285 390 ctriangle
  69 +grestore
  70 +
  71 +%tete
  72 +gsave
  73 +4 setlinewidth
  74 +0.5 0 0 setrgbcolor
  75 +300 400 100 ccircle
  76 +stroke
  77 +grestore
  78 +
  79 +%bouche
  80 +newpath
  81 +300 380 60 -160 -20 arc
  82 +closepath
  83 +stroke
... ...
carre_tournant.ps 0 → 100644
  1 +++ a/carre_tournant.ps
... ... @@ -0,0 +1,28 @@
  1 +%rosace_de_carre%
  2 +
  3 +/ccarre {
  4 + newpath
  5 + moveto
  6 + 0 200 rlineto
  7 + 200 0 rlineto
  8 + 0 -200 rlineto
  9 + closepath
  10 + stroke
  11 +} def
  12 +
  13 +/ccircle {
  14 + 0 360 arc
  15 + stroke
  16 +} def
  17 +
  18 +300 400 translate
  19 +
  20 +5 {
  21 + 0 0 200 ccircle
  22 + 6 {
  23 + 0 0 ccarre
  24 + 060 rotate
  25 + } repeat
  26 + 0.5 0.5 scale
  27 + 45 rotate
  28 +} repeat
... ...
echiquier.ps 0 → 100644
  1 +++ a/echiquier.ps
... ... @@ -0,0 +1,114 @@
  1 +%echiquier%
  2 +
  3 +/ccarre {
  4 + newpath
  5 + moveto
  6 + 0 50 rlineto
  7 + 50 0 rlineto
  8 + 0 -50 rlineto
  9 + closepath
  10 + fill
  11 +} def
  12 +
  13 +/cpawn {
  14 + gsave
  15 + 15 10 translate
  16 + newpath
  17 + 0 0 moveto
  18 + 7 17 lineto
  19 + 2 22 lineto
  20 + 10 30 lineto
  21 + 18 22 lineto
  22 + 13 17 lineto
  23 + 20 0 lineto
  24 + closepath
  25 + setrgbcolor
  26 + fill
  27 + grestore
  28 +} def
  29 +
  30 +/crook {
  31 + gsave
  32 + 15 10 translate
  33 + newpath
  34 + 3 0 moveto
  35 + 3 20 lineto
  36 + 0 20 lineto
  37 + 0 30 lineto
  38 + 3 30 lineto
  39 + 3 26 lineto
  40 + 8 26 lineto
  41 + 8 30 lineto
  42 + 13 30 lineto
  43 + 13 26 lineto
  44 + 17 26 lineto
  45 + 17 30 lineto
  46 + 20 30 lineto
  47 + 20 20 lineto
  48 + 17 20 lineto
  49 + 17 0 lineto
  50 + closepath
  51 + setrgbcolor
  52 + fill
  53 + grestore
  54 +} def
  55 +
  56 +%Grand carre%
  57 +100 220 translate
  58 +newpath
  59 +0 0 moveto
  60 +0 400 rlineto
  61 +400 0 rlineto
  62 +0 -400 rlineto
  63 +closepath
  64 +stroke
  65 +
  66 +%casses noires%
  67 +2 {
  68 + 4 {
  69 + 1 2 7 {
  70 + 1 0 0 ccarre
  71 + 100 0 translate
  72 + } for
  73 + -400 100 translate
  74 + } repeat
  75 + 180 rotate
  76 + -400 0 translate
  77 +} repeat
  78 +
  79 +
  80 +1 0 0 crook
  81 +gsave
  82 +300 150 translate
  83 +1 0 0 crook
  84 +grestore
  85 +
  86 +gsave
  87 +100 200 translate
  88 +0 1 0 crook
  89 +grestore
  90 +
  91 +gsave
  92 +50 100 translate
  93 +1 0 0 cpawn
  94 +grestore
  95 +
  96 +gsave
  97 +200 50 translate
  98 +1 0 0 cpawn
  99 +grestore
  100 +
  101 +gsave
  102 +50 300 translate
  103 +0 1 0 cpawn
  104 +grestore
  105 +
  106 +gsave
  107 +250 300 translate
  108 +0 1 0 cpawn
  109 +grestore
  110 +
  111 +gsave
  112 +350 200 translate
  113 +0 1 0 cpawn
  114 +grestore
... ...
rosace.ps 0 → 100644
  1 +++ a/rosace.ps
... ... @@ -0,0 +1,19 @@
  1 +%rosace%
  2 +
  3 +/ccircle {
  4 + 0 360 arc
  5 + stroke
  6 +} def
  7 +
  8 +/cpartcircle {
  9 + 120 240 arc
  10 + stroke
  11 +} def
  12 +
  13 +300 400 translate
  14 +0 0 200 ccircle
  15 +
  16 +6 {
  17 + 200 0 200 cpartcircle
  18 + 60 rotate
  19 +} repeat
... ...
tableau.ps 0 → 100644
  1 +++ a/tableau.ps
... ... @@ -0,0 +1,22 @@
  1 +%tableau%
  2 +
  3 +/ccarre {
  4 + newpath
  5 + moveto
  6 + 0 100 rlineto
  7 + 100 0 rlineto
  8 + 0 -100 rlineto
  9 + closepath
  10 + stroke
  11 +} def
  12 +
  13 +250 0 translate
  14 +
  15 +45 rotate
  16 +4 {
  17 + 4 {
  18 + 100 0 translate
  19 + 0 0 ccarre
  20 + } repeat
  21 + -400 100 translate
  22 +} repeat
... ...
toto.ps 0 → 100644
  1 +++ a/toto.ps
... ... @@ -0,0 +1,32 @@
  1 +%hello carre%
  2 +newpath
  3 +100 100 moveto
  4 +100 200 lineto
  5 +200 200 lineto
  6 +200 100 lineto
  7 +closepath
  8 +stroke
  9 +
  10 +newpath
  11 +150 150 moveto
  12 +100 0 rlineto
  13 +0 0 rlineto
  14 +0 100 rlineto
  15 +-100 0 rlineto
  16 +closepath
  17 +stroke
  18 +
  19 +newpath
  20 +500 500 50 0 270 arc
  21 +0 50 rlineto
  22 +50 0 rlineto
  23 +stroke
  24 +
  25 +newpath
  26 +0 0 moveto
  27 +0 790 lineto
  28 +610 790 lineto
  29 +610 0 lineto
  30 +closepath
  31 +10 setlinewidth
  32 +stroke
... ...