From 9ea96d212ae3c27c96676a20f5cdb0a2f6ef8bc6 Mon Sep 17 00:00:00 2001 From: mclaudel Date: Sun, 17 Jan 2021 19:21:50 +0100 Subject: [PATCH] Commit principal --- README.md | 19 +++++++++++++++++++ echiquier.ps | 229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ jo.ps | 31 +++++++++++++++++++++++++++++++ quiche-lorraine.ps | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 352 insertions(+), 0 deletions(-) create mode 100644 README.md create mode 100644 echiquier.ps create mode 100644 jo.ps create mode 100644 quiche-lorraine.ps diff --git a/README.md b/README.md new file mode 100644 index 0000000..c494672 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +TP de Transmission image multimédia + +TP1 : les représentations vectorielles, le format Postscript + +Voici le rendu de mon TP sur le langage Postscript dans le cadre du module de TIM. + +Le premier fichier (jo.ps) est une représentation des anneaux olympiques. Cette figure fait appel aux compétences de base de Postscript : + +créer un nouveau trait pour une nouvelle figure, choisir la couleur du trait, faire un arc de cercle. +Cette figure utilise une simple définition (/width 10 def) pour s'occuper de la largeur des anneaux qui reste la même. + +Le deuxième fichier (quiche-lorraine.ps) est une figure plus complexe. Sa définition en langage postscript utilise les principes de translation et de rotation ainsi que celui de la boucle for. On y retrouve aussi les utilisations des opérations rlineto ainsi que stroke. + +Le but étant de dessiner les parts de la quiche grâce à la fonction rotate et d'y placer des lardons en combinant les fonction rotate et translate. La différence de résultat du fait d'intervertir rotate et translate est expliquée dans les commentaires du code. + +Le troisième et dernier fichier (echiquier.ps) combine en quelque sorte toutes les compétences acquises. Un échiquier a été représenté et des pièces sont placées +L'utilisation de la commande repeat est présente dans le code. Les pièces sont des procédures définies pour faciliter leur placement en fin de code. + +Grâce à ce TP j'ai pu apprendre les bases puis les subtilités du langage Postscript et de la notation postfixée. \ No newline at end of file diff --git a/echiquier.ps b/echiquier.ps new file mode 100644 index 0000000..f723fd3 --- /dev/null +++ b/echiquier.ps @@ -0,0 +1,229 @@ +/case_noire { + newpath + moveto + 50 0 rlineto + 0 -50 rlineto + -50 0 rlineto + closepath + fill +} def + +/pion_rouge { + 1 0 0 setrgbcolor + newpath + moveto + 6 14 rlineto + -4 7 rlineto + 6 6 rlineto + 6 -6 rlineto + -4 -7 rlineto + 6 -14 rlineto + closepath + fill +} def + +/pion_vert { + 0 1 0 setrgbcolor + newpath + moveto + 6 14 rlineto + -4 7 rlineto + 6 6 rlineto + 6 -6 rlineto + -4 -7 rlineto + 6 -14 rlineto + closepath + fill +} def + +/roi_rouge { + 1 0 0 setrgbcolor + newpath + moveto + 6 10 rlineto + 0 15 rlineto + 2 0 rlineto + 0 5 rlineto + -5 0 rlineto + 0 2 rlineto + 5 0 rlineto + 0 5 rlineto + 2 0 rlineto + 0 -5 rlineto + 5 0 rlineto + 0 -2 rlineto + -5 0 rlineto + 0 -5 rlineto + 2 0 rlineto + 0 -15 rlineto + 6 -10 rlineto + closepath + fill +} def + +/roi_vert { + 0 1 0 setrgbcolor + newpath + moveto + 6 10 rlineto + 0 15 rlineto + 2 0 rlineto + 0 5 rlineto + -5 0 rlineto + 0 2 rlineto + 5 0 rlineto + 0 5 rlineto + 2 0 rlineto + 0 -5 rlineto + 5 0 rlineto + 0 -2 rlineto + -5 0 rlineto + 0 -5 rlineto + 2 0 rlineto + 0 -15 rlineto + 6 -10 rlineto + closepath + fill +} def + +/fou_vert { + 0 1 0 setrgbcolor + newpath + moveto + 8 22 rlineto + -4 7 rlineto + 6 8 rlineto + 6 -8 rlineto + -4 -7 rlineto + 8 -22 rlineto + closepath + fill +} def + +/tour_verte { + 0 1 0 setrgbcolor + newpath + moveto + 0 3 rlineto + 3 0 rlineto + 0 30 rlineto + -3 0 rlineto + 0 3 rlineto + 24 0 rlineto + 0 -3 rlineto + -3 0 rlineto + 0 -30 rlineto + 3 0 rlineto + 0 -3 rlineto + closepath + fill +} def + +/dame_verte { + 0 1 0 setrgbcolor + newpath + moveto + 6 10 rlineto + 0 15 rlineto + -3 14 rlineto + 16 0 rlineto + -3 -14 rlineto + 0 -15 rlineto + 6 -10 rlineto + closepath + fill +} def + +% Echiquier + + +gsave +150 500 translate +4 { + 0 0 case_noire stroke + 100 0 translate } repeat +grestore + +gsave +100 450 translate +4 { + 0 0 case_noire stroke + 100 0 translate } repeat +grestore + +gsave +150 400 translate +4 { + 0 0 case_noire stroke + 100 0 translate } repeat +grestore + +gsave +100 350 translate +4 { + 0 0 case_noire stroke + 100 0 translate } repeat +grestore + +gsave +150 300 translate +4 { + 0 0 case_noire stroke + 100 0 translate } repeat +grestore + +gsave +100 250 translate +4 { + 0 0 case_noire stroke + 100 0 translate } repeat +grestore + +gsave +150 200 translate +4 { + 0 0 case_noire stroke + 100 0 translate } repeat +grestore + +gsave +100 150 translate +4 { + 0 0 case_noire stroke + 100 0 translate } repeat +grestore + +newpath +100 500 moveto +400 0 rlineto +0 -400 rlineto +-400 0 rlineto +closepath +stroke + +% Placement des pièces + +117 405 pion_rouge +167 405 pion_rouge +217 405 pion_rouge +167 455 roi_rouge + +417 255 pion_vert +365 155 fou_vert +317 105 roi_vert +363 205 tour_verte +313 205 dame_verte + + +/Times-Roman findfont +20 scalefont +setfont + +0 0 0 setrgbcolor +newpath +100 550 moveto +(Comment mater en un coup depuis cette position ?) show + +newpath +237 520 moveto +((Trait aux verts)) show diff --git a/jo.ps b/jo.ps new file mode 100644 index 0000000..38e9c33 --- /dev/null +++ b/jo.ps @@ -0,0 +1,31 @@ +/width 10 def + +newpath +width setlinewidth +0.35 0.7 1 setrgbcolor +150 250 75 285 275 arc +stroke + +newpath +width setlinewidth +0.97 0.9 0.06 setrgbcolor +237.5 175 75 105 95 arc +stroke + +newpath +width setlinewidth +0 0 0 setrgbcolor +325 250 75 186 176 arc +stroke + +newpath +width setlinewidth +0.15 0.5 0.06 setrgbcolor +412.5 175 75 105 95 arc +stroke + +newpath +width setlinewidth +1 0 0 setrgbcolor +500 250 75 186 176 arc +stroke diff --git a/quiche-lorraine.ps b/quiche-lorraine.ps new file mode 100644 index 0000000..b5002da --- /dev/null +++ b/quiche-lorraine.ps @@ -0,0 +1,73 @@ +% Pâte de la quiche +newpath +gsave +20 setlinewidth +0.36 0.23 0.07 setrgbcolor +300 300 160 0 360 arc +stroke +grestore + + +% Croûte de la quiche +newpath +gsave +300 300 150 0 360 arc +closepath +0.89 0.88 0.39 setrgbcolor +fill +grestore + + +% Couper la quiche en 8 parts égales +0 45 360 { + newpath + gsave + 0.3 setlinewidth + 300 300 moveto + rotate + 150 0 rlineto + stroke + grestore +} for + + + +% Placer des lardons roses sur la quiche +0 36 360 { + gsave + 12 setlinewidth + 0.9 0.46 0.67 setrgbcolor + + 300 300 translate + rotate + + 20 20 moveto + 5 5 rlineto + + 55 55 moveto + 5 5 rlineto + + 90 90 moveto + 5 5 rlineto + + stroke + grestore +} for + + +% Placer des lardons (rouges) mais en interchangeant les commandes translate et rotate +% On voit ici que ce n'est pas ce que l'on veut puisque les lardons sont ici disposés à 300 pixels du coin en bas à droite de la page. +0 36 360 { + gsave + 12 setlinewidth + 0.84 0.15 0.17 setrgbcolor + + rotate + 300 300 translate + + 5 5 moveto + 5 5 rlineto + + stroke + grestore +} for -- libgit2 0.21.2