{"id":3975,"date":"2025-09-10T08:23:45","date_gmt":"2025-09-10T07:23:45","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=3975"},"modified":"2025-09-10T09:42:25","modified_gmt":"2025-09-10T08:42:25","slug":"des-fonctions-pour-dessiner","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/","title":{"rendered":"Des fonctions\u00a0 pour dessiner !\u00a0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Le r\u00e9pertoire de travail sera <strong> L3PBM<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dessiner une fonction sinus sur une image, cr\u00e9er une librairie pour nous aider \u00e0 dessiner, des points, des lignes horizontales , verticales , des lignes quelconques <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udd52 : 2  x   3 h <\/p>\n\n\n\n<nav aria-label=\"Table des mati\u00e8res\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#prerequis\">Pr\u00e9requis<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#but\">But<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#le-point\">Le\u00a0 point.<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#ecrire-une-fonction-void-effaceimage-void\">Ecrire une fonction void EffaceImage(void)<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#ecrire-une-fonction-void-sauveimage-void\">Ecrire une fonction void SauveImage(void)<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#ecrire-une-fonction-pour-faire-des-lignes-horizontales\">Ecrire une fonction pour faire des lignes horizontales.<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#ecrire-une-fonction-pour-faire-des-lignes-verticales\">Ecrire une fonction pour faire des lignes verticales.<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#la-fonction-ligne-int-x1-int-y1-int-x2-int-y2\">la fonction , ligne (int x1,int y1,int x2,int y2)<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#dessiner-des-axes-au-centre-de-l-image\">Dessiner des axes au centre de l&rsquo;image<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#tracer-un-sinus-de-pi-pi-une-periode-complete\">\u00a0Tracer un sinus de -PI\u00a0 \/ +PI une p\u00e9riode compl\u00e8te.<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#resultat-attendu\">R\u00e9sultat attendu :<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/des-fonctions-pour-dessiner\/#librairie-dorianpbm\">Librairie\u00a0 dorianpbm<\/a><\/li><\/ol><\/nav>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequis\">Pr\u00e9requis<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>D\u00e9couverte du format image en ASCII PBM, gcc langage C de base&nbsp;<\/li>\n\n\n\n<li>Cours sur les&nbsp;fichiers. (open)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"but\">But<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cr\u00e9ation de fonctions faites maison&nbsp;(librairie)&nbsp; , ici la lib \u00ab\u00a0dorianpbm\u00a0\u00bb<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"le-point\">Le&nbsp; point.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cette fonction est donn\u00e9e pour montrer comment faire une fonction en C , rappel surement .. et pour vous lancer<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/** point description *******************************************\/\n\/* point(x,y)  , place un point sur l'image a la coordonn\u00e9e x,y *\/\n\/* retourne 0 si ok 1 sinon                                     *\/\n\/****************************************************************\/\nint point(int x,int y)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Solution pour d\u00e9marrer \u00e0 l&rsquo;aide du projet sur github:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update &amp;&amp;  sudo apt install git -y\ngit config --global http.proxy 10.0.0.1:3128\ngit clone https:\/\/github.com\/CarolineDorian\/l3pbm.git<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cl3pmb.c<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/******************************************\/\n\/** Image avec points de 800 x 600       **\/\n\/** V1.Bogt2020 LtDorian\t\t **\/\n\/**                       09\/11\/2020\t **\/\n\/******************************************\/\n#include&lt;stdio.h>\n#include&lt;stdlib.h>\n\n#define largeur 800\n#define hauteur 600\n\n\/* variable globale du programme *\/\nchar image[largeur][hauteur];  \/* representation de notre image *\/\n\n\/* nos fonctions *\/\n\/************************** point description *******************\/\n\/* point(x,y)  , place un point sur l'image a la coordonn\u00e9e x,y *\/\n\/* retourne 0 si ok 1 sinon                                     *\/\n\/****************************************************************\/\nint point(int x,int y)\n{\n\t\/* on teste si nous sommes bien dans le tableau sinon on retourne 1 *\/\n\tif ((x&lt;0) || (x>=largeur))\n\t{\n\t\tfprintf(stderr,\"On sort de l'image !\\n\");\n\t\treturn EXIT_FAILURE;\n\t}\n\tif ((y&lt;0) || (y>=hauteur))\n\t{\n                fprintf(stderr,\"On sort de l'image !\\n\");\n                return EXIT_FAILURE;\n    }\n\timage[x][y]='1';\n\treturn EXIT_SUCCESS;\n}\n\n\n\/***************** La fonction principale **********************\/\nint main()\n{\n\n       int x,y;\n\/* remplir le tableau de '0' pour faire une image blanche    *\/\n       for (y=0; y &lt;hauteur ; y++) \/* pour toutes les lignes *\/\n           for (x=0; x&lt;largeur ; x++) \/* pour chaque colonnes *\/\n                image[x][y]='0';     \/* mettre un pixel blanc *\/\n\n\/* on place un point sur l'image coordonn\u00e9es 320,456 *\/\npoint(320,456); \/* on utilise notre premiere fonction pour faire un test unitaire*\/\n\n\/* on place un point sur l'image coordonn\u00e9es 501,322 pour tester *\/\npoint(501,322);\n\n\/*Afficher l'image Pbm en ASCII*\/\n\/* en tete de l'image *\/\nprintf(\"P1\\n\");\n\/* pas de commentaire dans notre fichier pbm *\/\n\/* on donne les coordonn\u00e9es en d\u00e9cimal dans l\u2019ent\u00eate *\/\nprintf(\"%d %d\\n\",largeur,hauteur);\n\/* on place tous les pixels *\/\n       for (y=0; y &lt;hauteur ; y++) \/* pour toutes les lignes *\/\n           for (x=0; x&lt;largeur ; x++) \/* pour chaque colonnes *\/\n                printf (\"%c \\n\",image[x][y]);\nreturn EXIT_SUCCESS;\n}\n\n\/*  faire un fichier pbm avec ce qui s'affiche *\/\n\/* .\/bitmap > bitmap.pbm  *\/<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ecrire-une-fonction-void-effaceimage-void\">Ecrire une fonction void EffaceImage(void)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Actuellement le main r\u00e9alise&nbsp; le remplissage de 0 dans le tableau contenant l&rsquo;image.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour am\u00e9liorer&nbsp; le code on va r\u00e9aliser&nbsp; une fonction&nbsp;<strong>EffaceImage&nbsp;<\/strong>qui sera une fonction qui efface en blanc toute l&rsquo;image.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00e9aliser un main ou on testera cette nouvelle fonction.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modifier le code pr\u00e9c\u00e9dent pour int\u00e9grer dans cette fonction.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void EffaceImage(void)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ecrire-une-fonction-void-sauveimage-void\">Ecrire une fonction void SauveImage(void)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Avec<a href=\"https:\/\/workboot.fr\/ciela\/open-close\/\"> vos connaissances sur les fichiers<\/a> , \u00e9crire une fonction qui cr\u00e9e le fichier image.pbm dans le r\u00e9pertoire courant de votre projet.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void SauveImage(void)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ecrire-une-fonction-pour-faire-des-lignes-horizontales\">Ecrire une fonction pour faire des lignes horizontales.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ecrire une fonction qui dessine une ligne horizontale dans l&rsquo;image , qui utilise la fonction point r\u00e9alis\u00e9e pr\u00e9c\u00e9demment.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">r\u00e9aliser un test unitaire&nbsp; de votre fonction, avec un main appropri\u00e9.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void LigneHorizontale(int x,int y,int nbpixel)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ecrire-une-fonction-pour-faire-des-lignes-verticales\">Ecrire une fonction pour faire des lignes verticales.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ecrire une fonction qui dessine une ligne verticale dans l&rsquo;image , qui utilise la fonction point r\u00e9alis\u00e9e pr\u00e9c\u00e9demment.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">r\u00e9aliser un test unitaire&nbsp; de votre fonction, avec un main appropri\u00e9.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void LigneVerticale(int x,int y,int nbpixel)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"la-fonction-ligne-int-x1-int-y1-int-x2-int-y2\">la fonction , ligne (int x1,int y1,int x2,int y2)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">permet de tracer une ligne du point 1 au point 2<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mr<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;Bresenham<\/a>&nbsp;y a r\u00e9fl\u00e9chit d\u00e9j\u00e0 pour vous<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Bresenham%27s_line_algorithm\" target=\"_blank\" rel=\"noreferrer noopener\">wikipedia anglais de Bresenham<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Et pour vous aider , une proposition de solution&nbsp;<a href=\"https:\/\/sites.google.com\/view\/snir1\/cours\/langage-c\/bresenham-ligne\">ici<\/a>&nbsp;!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void Ligne(int x1,int y1,int x2,int y2)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dessiner-des-axes-au-centre-de-l-image\">Dessiner des axes au centre de l&rsquo;image<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">si x=800 et y=600&nbsp; mettre les axes au centre de l&rsquo;image.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void Axes(int x,int y)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tracer-un-sinus-de-pi-pi-une-periode-complete\">&nbsp;Tracer un sinus de -PI&nbsp; \/ +PI une p\u00e9riode compl\u00e8te.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans notre image de 800&#215;600 dessiner un belle fonction sinus , attention la fonction est en pi radian<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">la librairie math\u00e9matique&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#include &lt;math.h&gt;&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">et ajouter&nbsp;<strong>-lm&nbsp;<\/strong>&nbsp;comme option \u00e0 gcc pour utiliser cette librairie.&nbsp;&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>man sin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">et ne plus mettre l&rsquo;option&nbsp;-ansi&nbsp;lors de la compilation pour utiliser math.h<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemple d&rsquo;utilisation de la fonction sinus en C <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@bruno-MS-7851:~\/Works\/Code_C\/sinus$ more sinus.c <\/code><\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;stdio.h>\n#include &lt;stdlib.h>\n#include &lt;math.h>\n\nint main (int argc,char **argv)\n{\n\tprintf (\"sin(pi)=%f\\n\",sin(M_PI));\n\tprintf (\"sin(pi\/2)=%f\\n\",sin(M_PI\/2));\n\treturn EXIT_SUCCESS;\n}\n<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@bruno-MS-7851:~\/Works\/Code_C\/sinus$ gcc sinus.c -o sinus -lm -pedantic -g -Wall<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00e9sultat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bruno@bruno-MS-7851:~\/Works\/Code_C\/sinus$ .\/sinus \nsin(pi)=0.000000\nsin(pi\/2)=1.000000\nbruno@bruno-MS-7851:~\/Works\/Code_C\/sinus$ <\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># aide sous linux\nman math.h\nman sin<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"resultat-attendu\">R\u00e9sultat attendu :<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/sinus.png\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/sinus.png\" alt=\"\" class=\"wp-image-4016\" srcset=\"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/sinus.png 800w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/sinus-300x225.png 300w, https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/09\/sinus-768x576.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"librairie-dorianpbm\">Librairie\u00a0 dorianpbm<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00e9aliser le librairie dorianpbm&nbsp; (dorianpbm.c et dorianpbm.h)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">avec un fichier README&nbsp; qui expliquera le projet et comment le compiler.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Donner le projet complet (makefile et lib) le tout dans un r\u00e9pertoire imagepbm&nbsp; &#8211;&gt; imagepbm.tar<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le r\u00e9pertoire de travail sera L3PBM Dessiner une fonction sinus sur une image, cr\u00e9er une librairie pour nous aider \u00e0 dessiner, des points, des lignes horizontales , verticales , des lignes quelconques \ud83d\udd52 : 2 x 3 h Pr\u00e9requis But Le&nbsp; point. Cette fonction est donn\u00e9e pour montrer comment faire une fonction en C , [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-3975","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"Le r\u00e9pertoire de travail sera L3PBM Dessiner une fonction sinus sur une image, cr\u00e9er une librairie pour nous aider \u00e0 dessiner, des points, des lignes horizontales , verticales , des lignes quelconques \ud83d\udd52 : 2 x 3 h Pr\u00e9requis But Le&nbsp; point. Cette fonction est donn\u00e9e pour montrer comment faire une fonction en C ,\u2026","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/3975","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=3975"}],"version-history":[{"count":19,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/3975\/revisions"}],"predecessor-version":[{"id":4022,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/3975\/revisions\/4022"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=3975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}