From 2b78310f0905e1d7cc9f1e8234019ca5c43c0323 Mon Sep 17 00:00:00 2001 From: "mathieu.schiess@edu.ge.ch" <mathieu.schiess@posteo.ch> Date: Thu, 16 Jan 2025 00:00:22 +0100 Subject: [PATCH] =?UTF-8?q?corrige=20des=20images=20qui=20=C3=A9taient=20a?= =?UTF-8?q?u=20format=20eps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../imgs_chap5/img_exo_2spirales (copie 1).py | 52 ++ Notebooks/imgs_chap5/img_exo_2spirales.eps | 399 +++++++++++++ Notebooks/imgs_chap5/img_exo_2spirales.png | Bin 11773 -> 2518 bytes .../imgs_chap5/img_exo_carres (copie 1).py | 44 ++ Notebooks/imgs_chap5/img_exo_carres.eps | 372 ++++++++++++ Notebooks/imgs_chap5/img_exo_carres.png | Bin 11784 -> 2075 bytes .../imgs_chap5/img_exo_spirale (copie 1).py | 41 ++ Notebooks/imgs_chap5/img_exo_spirale.eps | 390 ++++++++++++ Notebooks/imgs_chap5/img_exo_spirale.png | Bin 11663 -> 2086 bytes .../imgs_chap5/img_exo_triangles (copie 1).py | 46 ++ Notebooks/imgs_chap5/img_exo_triangles.eps | 558 ++++++++++++++++++ Notebooks/imgs_chap5/img_exo_triangles.png | Bin 14630 -> 5251 bytes 12 files changed, 1902 insertions(+) create mode 100644 Notebooks/imgs_chap5/img_exo_2spirales (copie 1).py create mode 100644 Notebooks/imgs_chap5/img_exo_2spirales.eps create mode 100644 Notebooks/imgs_chap5/img_exo_carres (copie 1).py create mode 100644 Notebooks/imgs_chap5/img_exo_carres.eps create mode 100644 Notebooks/imgs_chap5/img_exo_spirale (copie 1).py create mode 100644 Notebooks/imgs_chap5/img_exo_spirale.eps create mode 100644 Notebooks/imgs_chap5/img_exo_triangles (copie 1).py create mode 100644 Notebooks/imgs_chap5/img_exo_triangles.eps diff --git a/Notebooks/imgs_chap5/img_exo_2spirales (copie 1).py b/Notebooks/imgs_chap5/img_exo_2spirales (copie 1).py new file mode 100644 index 0000000..a7470e6 --- /dev/null +++ b/Notebooks/imgs_chap5/img_exo_2spirales (copie 1).py @@ -0,0 +1,52 @@ +from turtle import * + +speed(0) +WIDTH, HEIGHT = 500, 500 + +screen = Screen() +screen.setup(WIDTH + 4, HEIGHT + 8) # fudge factors due to window borders & title bar + + +penup() +for k in range(21): + goto(-500+k*50,-500) + pendown() + goto(-500+k*50,500) + penup() +for k in range(20): + goto(-500,-500+k*50) + pendown() + goto(500,-500+k*50) + penup() + +goto(0, -100) +pendown() +width(5) + + +color("blue") +right(90) + +x = 50 +for _ in range(3): + forward(x) + right(90) + x = x + 100 + +color("red") +x = x - 100 +for _ in range(5): + forward(x) + right(90) + x = x - 50 + +shape('turtle') +color("black") +left(90) +penup() +goto(0, -100) + +ts = getscreen() +ts.getcanvas().postscript(file="img_exo_2spirales.eps") + +done() \ No newline at end of file diff --git a/Notebooks/imgs_chap5/img_exo_2spirales.eps b/Notebooks/imgs_chap5/img_exo_2spirales.eps new file mode 100644 index 0000000..dfa5670 --- /dev/null +++ b/Notebooks/imgs_chap5/img_exo_2spirales.eps @@ -0,0 +1,399 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Tk Canvas Widget +%%For: mathieu +%%Title: Window .!canvas +%%CreationDate: Wed Jan 15 22:25:01 2025 +%%BoundingBox: 117 206 495 586 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%Orientation: Portrait +%%EndComments + +%%BeginProlog +% This is a standard prolog for Postscript generated by Tk's canvas +% widget. +/CurrentEncoding [ +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle +/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash +/zero/one/two/three/four/five/six/seven +/eight/nine/colon/semicolon/less/equal/greater/question +/at/A/B/C/D/E/F/G +/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W +/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore +/grave/a/b/c/d/e/f/g +/h/i/j/k/l/m/n/o +/p/q/r/s/t/u/v/w +/x/y/z/braceleft/bar/braceright/asciitilde/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron +/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered +/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply +/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide +/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis +] def +50 dict begin +/baseline 0 def +/stipimage 0 def +/height 0 def +/justify 0 def +/lineLength 0 def +/spacing 0 def +/stipple 0 def +/strings 0 def +/xoffset 0 def +/yoffset 0 def +/tmpstip null def +/baselineSampler ( TXygqPZ) def +baselineSampler 0 196 put +/cstringshow {{ dup type /stringtype eq { show } { glyphshow } ifelse } forall } bind def +/cstringwidth {0 exch 0 exch { dup type /stringtype eq { stringwidth } { currentfont /Encoding get exch 1 exch put (\001) stringwidth } ifelse exch 3 1 roll add 3 1 roll add exch } forall } bind def +/ISOEncode {dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding CurrentEncoding def currentdict end /Temporary exch definefont } bind def +/StrokeClip {{strokepath} stopped { (This Postscript printer gets limitcheck overflows when) = (stippling dashed lines; lines will be printed solid instead.) = [] 0 setdash strokepath} if clip } bind def +/EvenPixels {dup 0 matrix currentmatrix dtransform dup mul exch dup mul add sqrt dup round dup 1 lt {pop 1} if exch div mul } bind def +/StippleFill {/tmpstip 1 index def 1 EvenPixels dup scale pathbbox 4 2 roll 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll 6 index exch { 2 index 5 index 3 index { gsave 1 index exch translate 5 index 5 index true matrix tmpstip imagemask grestore } for pop } for pop pop pop pop pop } bind def +/AdjustColor {CL 2 lt { currentgray CL 0 eq { .5 lt {0} {1} ifelse } if setgray } if } bind def +/DrawText {/stipple exch def /justify exch def /yoffset exch def /xoffset exch def /spacing exch def /strings exch def /lineLength 0 def strings { cstringwidth pop dup lineLength gt {/lineLength exch def} {pop} ifelse newpath } forall 0 0 moveto baselineSampler false charpath pathbbox dup /baseline exch def exch pop exch sub /height exch def pop newpath translate rotate lineLength xoffset mul strings length 1 sub spacing mul height add yoffset mul translate justify lineLength mul baseline neg translate strings { dup cstringwidth pop justify neg mul 0 moveto stipple { gsave /char (X) def { dup type /stringtype eq { { char 0 3 -1 roll put currentpoint gsave char true charpath clip StippleText grestore char stringwidth translate moveto } forall } { currentfont /Encoding get exch 1 exch put currentpoint gsave (\001) true charpath clip StippleText grestore (\001) stringwidth translate moveto } ifelse } forall grestore } {cstringshow} ifelse 0 spacing neg translate } forall } bind def +/TkPhotoColor {gsave 32 dict begin /tinteger exch def /transparent 1 string def transparent 0 tinteger put /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /crpp newdict /Decode get length 2 idiv def /str w string def /pix w crpp mul string def /substrlen 2 w log 2 log div floor exp cvi def /substrs [ { substrlen string 0 1 substrlen 1 sub { 1 index exch tinteger put } for /substrlen substrlen 2 idiv def substrlen 0 eq {exit} if } loop ] def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put olddict /DataSource get str readstring pop pop /tail str def /x 0 def olddict /DataSource get pix readstring pop pop { tail transparent search dup /done exch not def {exch pop exch pop} if /w1 exch length def w1 0 ne { newdict /DataSource pix x crpp mul w1 crpp mul getinterval put newdict /Width w1 put mat 4 x neg put /x x w1 add def newdict image /tail tail w1 tail length w1 sub getinterval def } if done {exit} if tail substrs { anchorsearch {pop} if } forall /tail exch def tail length 0 eq {exit} if /x w tail length sub def } loop } for end grestore } bind def +/TkPhotoMono {gsave 32 dict begin /dummyInteger exch def /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /pix w 7 add 8 idiv string def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put 0.000 0.000 0.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask 1.000 1.000 1.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask } for end grestore } bind def +%%EndProlog +%%BeginSetup +/CL 2 def +%%EndSetup + +%%Page: 1 1 +save +306.0 396.0 translate +0.75 0.75 scale +2 -253 translate +-253 506 moveto 249 506 lineto 249 0 lineto -253 0 lineto closepath clip newpath +gsave +grestore +gsave +grestore +gsave +-250 -249 moveto +-250 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-200 -249 moveto +-200 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-150 -249 moveto +-150 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-100 -249 moveto +-100 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-50 -249 moveto +-50 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +0 -249 moveto +0 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +50 -249 moveto +50 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +100 -249 moveto +100 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +150 -249 moveto +150 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +200 -249 moveto +200 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +250 -249 moveto +250 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 1 moveto +500 1 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 51 moveto +500 51 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 101 moveto +500 101 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 151 moveto +500 151 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 201 moveto +500 201 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 251 moveto +500 251 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 301 moveto +500 301 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 351 moveto +500 351 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 401 moveto +500 401 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 451 moveto +500 451 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 501 moveto +500 501 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +0 151 moveto +3.06161699786838e-15 101 lineto +-150 101 lineto +-150 351 lineto +1 setlinecap +1 setlinejoin +5 setlinewidth +[] 0 setdash +0.000 0.000 1.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-150 351 moveto +99.9999999999999 351 lineto +100 151 lineto +-50 151 lineto +-50 251 lineto +-4.2632564145606e-14 251 lineto +1 setlinecap +1 setlinejoin +5 setlinewidth +[] 0 setdash +1.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +grestore +gsave +16 151 moveto +14 153 lineto +10 152 lineto +7 155 lineto +9 158 lineto +8 160 lineto +5 157 lineto +0.999999999999997 158 lineto +-3 156 lineto +-6 159 lineto +-8 157 lineto +-5 155 lineto +-7 151 lineto +-5 147 lineto +-8 145 lineto +-6 143 lineto +-3 146 lineto +1 144 lineto +5 145 lineto +8 142 lineto +9 144 lineto +7 147 lineto +10 150 lineto +14 149 lineto +16 151 lineto +0.000 0.000 0.000 setrgbcolor AdjustColor +eofill +16 151 moveto +14 153 lineto +10 152 lineto +7 155 lineto +9 158 lineto +8 160 lineto +5 157 lineto +0.999999999999997 158 lineto +-3 156 lineto +-6 159 lineto +-8 157 lineto +-5 155 lineto +-7 151 lineto +-5 147 lineto +-8 145 lineto +-6 143 lineto +-3 146 lineto +1 144 lineto +5 145 lineto +8 142 lineto +9 144 lineto +7 147 lineto +10 150 lineto +14 149 lineto +16 151 lineto +1 setlinejoin 1 setlinecap +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +restore showpage + +%%Trailer +end +%%EOF diff --git a/Notebooks/imgs_chap5/img_exo_2spirales.png b/Notebooks/imgs_chap5/img_exo_2spirales.png index dfa5670fdf4c64955da3544ef33861af0164e329..cc7ff525152e5463d3486e0fe766d7a3df171254 100644 GIT binary patch literal 2518 zcmeAS@N?(olHy`uVBq!ia0y~yV60+bV65R_W?*3Wrrxlhfq_9G*(1o8fuTx`fuW&= zf#DYe14F|L28L1t28LG&3=CE?7#PG0=IjczVPIf59N-h;`v3ob1~6!6sOw_zn#ExM znSt*=1H(E7hW`u<rx?usgBkO|YDguD7#Ntq$PR2^A_GGU$cW=$BiAu7d}Cmk4`xFw zVdwyJb~CsLGQ2Bi=;&Z5XJGg*!oa}Hz`)ADFq45{H%L1x14BLo0|x`cI|hc`|NsBj z58nThfq_A<B*-tAq2sv1ornD$$6em+7Tj;VRq&e2m%shLm403Py8C<Rk?nu}UYfsu z{q&CG-}k5O7VKZ;2{Mr}$=lt9p@UV{gMop8v%n*=n1O)-#P(otJDF|Az`(#>;_2(k z{*sYj%u4d$*Mf2e2KHN?E{-7;x8B~pStcFI;1X!bV<geUdxViG@mNo8+YC*f|Np~1 zxV)dRmWr=i;V)h~|LNSzqLHV+osL}_rmnu4GkwOVML|qQb-S1ENd0()ZFlkWltYrs z_N<uVQ2Ohp#=GyyHc&Z{?K<-wO*<NVXH!L2w3vV4=|`G*k#vxZ;<YuFeK%WaKrBb{ z@Y)U2rydQSTW8kw`>zE3ypQApP>^eXzw=pt&ki~J>%wuH?QG|M(o+9=Y0~ogpSNA- zbKZ_#ULN<>?0eaEo9o>BINtBxd3^WXNco?!@1N}Z|M24C*1Bu+b!&djKD%+M?Dyl7 zN|)EG@!x#8b(7!vg1K=kHx&&=BFZvf;<lgvp6@wKrMqVS`?4c+?!S{WlYiAcc;jdP zdj47GvZ}RfE^Egu4_~!ra1wJ0e}%`{zI$6bx32!&vU`tHckRvVdpS3JckXigZ*!}b z-G05U_R5vyzw=G@y;k?%|DfEq;#b`@|L12e-<I2SSvzF;^&NieLn3z$S|Tt%`L<vF z?(aNR($UNB&y8!@ZvVfXe~#aN>$!FHR(p??RxLesYCwszCV%f<KgVyMvOIjn#h2&x z_0E}Jc|H5-{ff``9=5;v!ewgp_vq87NB>qIjy`<*J<s9h!~8d2ie{DkVxNBaY1)sw zmEZqC)cuS6f6w0B##W~Cgx~sr+b{X=cYpcE{`;l<pNzjB)#v|vt?jRVXJz@dm-FZS z`|$JQ%I>puQgw1|@yGT*`|#4WVz=?G%j^F?%y#qBKXiNU$Jg?I-&b9pTjl-#faLx! zSAIw4?+MO-dAUElvi^|aKVPM~Uw6-c?Vs<H|6}LA%l`Ez-sW$f|M%PP<jeV+=hppl z&imh1T>AO={P21EAC^?TRa|fO|K8QC((ey{u3hQ3-uB7;%hoIW*4w5mzdzq^eL&c{ z%i2?>zW&0M`qXN#6DT>+M`-uVhdLEi-*a=0+s&8%&Sm<_wIcqE!Qbhp=idA2`{nA# z?f-wxep>e+fnN0qT7e3!!`6sD{HoFZdszpl8XTyq4&*fLH>s%~Lzd6){lz_@{?+{s zW6>@K1_tF4*NBpWVk?i#pwwcg{L;LX%)E4`{0atRbBhXN3j=LKLvw8-12glb|Fanw w804VJeNxL(a~J}GbsbaklTvk!^$ZkT1A^T^jN9`>y+N%QPgg&ebxsLQ08XmaU;qFB literal 11773 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 N^HR7}RbBnvxB#waZnFRY diff --git a/Notebooks/imgs_chap5/img_exo_carres (copie 1).py b/Notebooks/imgs_chap5/img_exo_carres (copie 1).py new file mode 100644 index 0000000..4c8828b --- /dev/null +++ b/Notebooks/imgs_chap5/img_exo_carres (copie 1).py @@ -0,0 +1,44 @@ +from turtle import * + +speed(0) +WIDTH, HEIGHT = 500, 500 + +screen = Screen() +screen.setup(WIDTH + 4, HEIGHT + 8) # fudge factors due to window borders & title bar + + +penup() +for k in range(21): + goto(-500+k*50,-500) + pendown() + goto(-500+k*50,500) + penup() +for k in range(20): + goto(-500,-500+k*50) + pendown() + goto(500,-500+k*50) + penup() + +# pour positionner le curseur en bas à gauche +penup() +goto(-200, -200) +pendown() + +# mettre le bon style de trait +width(5) +color("red") + +def carre(longueur): + for _ in range(4): + forward(longueur) + left(90) +# à compléter avec maximum 5 lignes +x = 50 +for _ in range(8): + carre(x) + x = 50 + x + +ts = getscreen() +ts.getcanvas().postscript(file="img_exo_carres.eps") + +done() \ No newline at end of file diff --git a/Notebooks/imgs_chap5/img_exo_carres.eps b/Notebooks/imgs_chap5/img_exo_carres.eps new file mode 100644 index 0000000..1e0fedb --- /dev/null +++ b/Notebooks/imgs_chap5/img_exo_carres.eps @@ -0,0 +1,372 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Tk Canvas Widget +%%For: mathieu +%%Title: Window .!canvas +%%CreationDate: Wed Jan 15 23:09:17 2025 +%%BoundingBox: 117 206 495 586 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%Orientation: Portrait +%%EndComments + +%%BeginProlog +% This is a standard prolog for Postscript generated by Tk's canvas +% widget. +/CurrentEncoding [ +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle +/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash +/zero/one/two/three/four/five/six/seven +/eight/nine/colon/semicolon/less/equal/greater/question +/at/A/B/C/D/E/F/G +/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W +/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore +/grave/a/b/c/d/e/f/g +/h/i/j/k/l/m/n/o +/p/q/r/s/t/u/v/w +/x/y/z/braceleft/bar/braceright/asciitilde/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron +/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered +/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply +/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide +/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis +] def +50 dict begin +/baseline 0 def +/stipimage 0 def +/height 0 def +/justify 0 def +/lineLength 0 def +/spacing 0 def +/stipple 0 def +/strings 0 def +/xoffset 0 def +/yoffset 0 def +/tmpstip null def +/baselineSampler ( TXygqPZ) def +baselineSampler 0 196 put +/cstringshow {{ dup type /stringtype eq { show } { glyphshow } ifelse } forall } bind def +/cstringwidth {0 exch 0 exch { dup type /stringtype eq { stringwidth } { currentfont /Encoding get exch 1 exch put (\001) stringwidth } ifelse exch 3 1 roll add 3 1 roll add exch } forall } bind def +/ISOEncode {dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding CurrentEncoding def currentdict end /Temporary exch definefont } bind def +/StrokeClip {{strokepath} stopped { (This Postscript printer gets limitcheck overflows when) = (stippling dashed lines; lines will be printed solid instead.) = [] 0 setdash strokepath} if clip } bind def +/EvenPixels {dup 0 matrix currentmatrix dtransform dup mul exch dup mul add sqrt dup round dup 1 lt {pop 1} if exch div mul } bind def +/StippleFill {/tmpstip 1 index def 1 EvenPixels dup scale pathbbox 4 2 roll 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll 6 index exch { 2 index 5 index 3 index { gsave 1 index exch translate 5 index 5 index true matrix tmpstip imagemask grestore } for pop } for pop pop pop pop pop } bind def +/AdjustColor {CL 2 lt { currentgray CL 0 eq { .5 lt {0} {1} ifelse } if setgray } if } bind def +/DrawText {/stipple exch def /justify exch def /yoffset exch def /xoffset exch def /spacing exch def /strings exch def /lineLength 0 def strings { cstringwidth pop dup lineLength gt {/lineLength exch def} {pop} ifelse newpath } forall 0 0 moveto baselineSampler false charpath pathbbox dup /baseline exch def exch pop exch sub /height exch def pop newpath translate rotate lineLength xoffset mul strings length 1 sub spacing mul height add yoffset mul translate justify lineLength mul baseline neg translate strings { dup cstringwidth pop justify neg mul 0 moveto stipple { gsave /char (X) def { dup type /stringtype eq { { char 0 3 -1 roll put currentpoint gsave char true charpath clip StippleText grestore char stringwidth translate moveto } forall } { currentfont /Encoding get exch 1 exch put currentpoint gsave (\001) true charpath clip StippleText grestore (\001) stringwidth translate moveto } ifelse } forall grestore } {cstringshow} ifelse 0 spacing neg translate } forall } bind def +/TkPhotoColor {gsave 32 dict begin /tinteger exch def /transparent 1 string def transparent 0 tinteger put /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /crpp newdict /Decode get length 2 idiv def /str w string def /pix w crpp mul string def /substrlen 2 w log 2 log div floor exp cvi def /substrs [ { substrlen string 0 1 substrlen 1 sub { 1 index exch tinteger put } for /substrlen substrlen 2 idiv def substrlen 0 eq {exit} if } loop ] def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put olddict /DataSource get str readstring pop pop /tail str def /x 0 def olddict /DataSource get pix readstring pop pop { tail transparent search dup /done exch not def {exch pop exch pop} if /w1 exch length def w1 0 ne { newdict /DataSource pix x crpp mul w1 crpp mul getinterval put newdict /Width w1 put mat 4 x neg put /x x w1 add def newdict image /tail tail w1 tail length w1 sub getinterval def } if done {exit} if tail substrs { anchorsearch {pop} if } forall /tail exch def tail length 0 eq {exit} if /x w tail length sub def } loop } for end grestore } bind def +/TkPhotoMono {gsave 32 dict begin /dummyInteger exch def /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /pix w 7 add 8 idiv string def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put 0.000 0.000 0.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask 1.000 1.000 1.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask } for end grestore } bind def +%%EndProlog +%%BeginSetup +/CL 2 def +%%EndSetup + +%%Page: 1 1 +save +306.0 396.0 translate +0.75 0.75 scale +2 -253 translate +-253 506 moveto 249 506 lineto 249 0 lineto -253 0 lineto closepath clip newpath +gsave +grestore +gsave +grestore +gsave +-250 -249 moveto +-250 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-200 -249 moveto +-200 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-150 -249 moveto +-150 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-100 -249 moveto +-100 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-50 -249 moveto +-50 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +0 -249 moveto +0 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +50 -249 moveto +50 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +100 -249 moveto +100 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +150 -249 moveto +150 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +200 -249 moveto +200 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +250 -249 moveto +250 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 1 moveto +500 1 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 51 moveto +500 51 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 101 moveto +500 101 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 151 moveto +500 151 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 201 moveto +500 201 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 251 moveto +500 251 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 301 moveto +500 301 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 351 moveto +500 351 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 401 moveto +500 401 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 451 moveto +500 451 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 501 moveto +500 501 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-200 51 moveto +-150 51 lineto +-150 101 lineto +-200 101 lineto +-200 51 lineto +-100 51 lineto +-100 151 lineto +-200 151 lineto +-200 51 lineto +-50 50.9999999999999 lineto +-49.9999999999999 201 lineto +-200 201 lineto +-200 51 lineto +-5.6843418860808e-14 50.9999999999999 lineto +1.02360665028348e-13 251 lineto +-200 251 lineto +-200 51 lineto +49.9999999999999 50.9999999999998 lineto +50.0000000000002 301 lineto +-200 301 lineto +-200 51.0000000000001 lineto +99.9999999999999 50.9999999999997 lineto +100 351 lineto +-200 351 lineto +-200 51.0000000000001 lineto +150 50.9999999999996 lineto +150 401 lineto +-200 401 lineto +-200 51.0000000000001 lineto +200 50.9999999999995 lineto +200.000000000001 450.999999999999 lineto +-199.999999999999 451 lineto +-200 51.0000000000002 lineto +1 setlinecap +1 setlinejoin +5 setlinewidth +[] 0 setdash +1.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-200 51.0000000000002 moveto +-209 56.0000000000002 lineto +-207 51.0000000000002 lineto +-209 46.0000000000002 lineto +-200 51.0000000000002 lineto +1.000 0.000 0.000 setrgbcolor AdjustColor +eofill +-200 51.0000000000002 moveto +-209 56.0000000000002 lineto +-207 51.0000000000002 lineto +-209 46.0000000000002 lineto +-200 51.0000000000002 lineto +1 setlinejoin 1 setlinecap +1 setlinewidth +[] 0 setdash +1.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +restore showpage + +%%Trailer +end +%%EOF diff --git a/Notebooks/imgs_chap5/img_exo_carres.png b/Notebooks/imgs_chap5/img_exo_carres.png index 1e0fedbdfdc8edc27568fbb7a40e41c88a114824..ac886413a2ff24a885922d57c43662ebbc927045 100644 GIT binary patch literal 2075 zcmeAS@N?(olHy`uVBq!ia0y~yV60+bV65R_W?*3Wrrxlhfq_9G*(1o8fuTx`fuW&= zf#DYe14F|L28L1t28LG&3=CE?7#PG0=IjczVPIfz4e$wZ{r~?z0~q{gVEE6#untUq z1CtODTqFYnLkC3J|NmdtEXrbFU=S_|@(X6@IPTJMeE0XX{^{?PeqCFB@z3v*by7<i z7#J9nyxm<GI#^{r7#J8h3p^r=85kHqY!3#vli79*3=Hfgp1!W^FB$p8tPH<6+~{Rs zVB6v8;uunK>+RjsdCB2Ctbr?YzbmizOM3mk-c*-&(L&FLu(#gVC8b%54(@#GdEoNP z61(|a@3($(UM98j&dF=bi`1j%{}TQE>1j;G`l<3pS3NxYmlpl6j+uXIZceRM`KGUM zRRbunYF2eswceiT(@*)o^|$4{WFK2IH++Nr{5bFTz4x9bykDCT^=EDUvU1BC)$@Ko zh<UkRtuB-~IR5!d?VV@#tIEw@6~+6U@3rdRwkcmCysC6mZKq9=^Y-jty5xA!rDV;Q z8z~i*cX<E%>%Q9gi`U0WR4)wgtGw?Orav`1=aTt-nZ5FJo+<D9`p>wUx^|*Ee9?>T z^6pwO0gGQ;-~at>`b*oE@Bgd+SKa-(+$&7((CfY5>qFPuyVewh)xXZZ{#xVL)%u55 z#HRdXrjGwn-2(CFrkDM{kFC3Y_ELRUc24m1*XwloAAXHf`J4XZK~JqJTk!lx^CMrr z_y2Xf>8R?``F@`FqXT}$dHwo5`QNsLLeH1WgD-s-o3d~Eq<{aG?AMKm3HtSN%9p*Y zOW!YDvfut?KDXHPDRow=wfT-Ot2L=(%u3cT6OT`ntKQqU=zI<T-Z*pb`Y+BEAjXWS z0*?0!_pfSR*<Alxz7C||H}~_0ahJX?gE-G(*OD)?t1qf9eIL=Qr&)VEtHkrAb=YEW zulpONVuOD5U41d>Qu!LU=~MP4n+}N5(BzZs`;WXX-TY<e^&3p<uk$Y3#Q*SV<=IQe z>k5SS3pKC2Q=ewMcgcI-sWTz5N3EQJlrmUl-L2kywd$(-Ap5oIu8wUH$NLr6U$X^Y zQQWim->M+_IScduPF#OI@QZW(Lz$c2zj&#TF_ElC&h(G}OW*zk3XQ|pZ<NKam-eYW zptxs`s&TM<0f+v3`?qJVe6Zg<(>rY$4T3?{cG{{7|9=#IP&Ez~{dHe&f4%*eNi$b+ z{gt17dVc-iJt2L{vFh5g?osoleqH<jSNrSvqt`1{f3?dW{4J9ILg3!l?f>GdrZ?|B zlzZ{j_J1#5zP+1&r}*cKm%l<B_x%y~du#Xp!OHvo6RPaXfA9Wx!#iymsDvNDvKwB9 zbX~u3?)mjo{4=wbEIA(ZpYh?1Fh_|*<-ZIJ49X?05hVr1Rvwu_sl`tDrFkitdFf91 z6%5Aa78S-82HJ*(=GsOEX68%(XEQJ`$U&9+q?V=TFa!kaI;P|&rRo~%87R001iOJ4 Tx95p^gKBM0S3j3^P6<r_#0v;h literal 11784 zcmY#Y3<%bBOvz75)iu^LP;d<hb^|fER8^geQWHz^i>wqvvK5>Y^U4y76~Z%9(o;*g zR8`$T;<<?>8JVf2T&k)enI$=?Rtn*nc`5nj3VMpkVC66~GV}9X5=%hxsVNFxiFpc! zrV2*JRtA<<hUN-J21ce_s;W-;rFkitdFf916;=v{U~w}A6H8MCQwuXLRn>sR^weT2 z1w$@XRhRta(%jU%5|_l1L@Nd7oYcfTbEiy@qx_39Q}ap^OEUBGtP}$Bi%N<T!Q!rY zDbD%1AU(xgAgfZ-GxGw9@^kXjxl|QGGBS%5GK&=w6^cs|^HLIvQWOfnatdkrMG67= z#U;hbMVSR93hAkNsYQt;sVNFcl?ox*>ct8$Un-P?gGG-^-?_A?C^fIdH7_|I<Qau% zF8$(y#N<@s$w90kwIVquF;~B^G`}P@B`HTguQWF)wWv5VJx@O+KPM-#NWUPpC^<E+ zL_aaNAhoDCF)sz8xHvN}Jtvh*zaX(FH7_SMtpvg<%1qBF(N8QcNiE7O&eku;DJ|Ad z&d<$F)X%6a$Vklt8JC%#qF<boSe(J7UzJ*vub-cns$Wu`uV0c;l$xramS0+=pO#sc zs$ZO0p<kR@mYT<<p9(fMFEcMyKRG`qKTp3nH8&H&%1JFQ)=w=gP0Z0x2PN**BK^YB z)M8MA;nGhm(Rb8$(s$N((RbB%(|706_t5v$_tN*)_tE#&_tW?1(htxN)DO}R)(_DS z)eqAT=hBbRkJOLSPbx}G&Q2`>`z$FjIUDR?m?+Gb$(fnSnMKK^x%#DfDXB%p$@xX8 zT>9xniDjw!iTX+U$@(e!srqU9>0J65`kDG!`q}z9`nmdf`uSY?1^R{hMf%11CHkfM zW%}h@`W5<>`c+^XQlYjML3l{Em1O3mKoi~|PE<r^511bysW2tKJWn5-)<DT8Co?Zy zKN+0&k}LHqQ}gtbit@8l^O6#a^ovuIA@Q4%nOc-uoC!)}1(lF+$}dVuOU=y$r<L^5 z%$%Im+<Zth=H#bmCMV|P<(I$`V^L~)CdjVT6#d-9<f8mMF8!3$bWkb;CEVQ1ywYM& z$}BD|NG;0DFM^~{I4?1|v?NtOw-l7}6Vr<l3o@Xo8{~)7qSO>F{p8e?%$%G=P!fl0 z%P&gFO)O3>%>kumxC^0<&jY38qLS1ikd}<ZoHU4?g{6rg!D4vQ289)uz9S^5IYM0G z2uX`+IjI%;j*yh%2oE5~B2aiby6QVa-NdEu3eoKf(d~+)+ZC?O6QafwqQ(<RjVDYE zm%eLBhQ1%fLVt*Qe~5a2B=!DK1u$*;xurQJnFTqOT>Acy%oPgJ8w$}IiljFbt|<~C z8IqA-l&7DbT9liZmy(oI%%u;C08p-j$R{FcPJ~#T2sa}U92AME`pNL1NQGFP3ela4 zq&pR^Efb<96QTy1@xg(e2~)$RpIVZkp9irpAEG`VqCOwV%zUT<m^S^C%(BdsR4)B| zNI;ZAbe2MNmLlmag=?vVNS1&Dq7o*|6|0bvn#N^nppcT8T%wQ!suj8PlM;(lL8(o_ z04%FtT#{LknVXoN3KPfxm#;8hR%vlbW?ChT3)1P6nwMUZ0TTh`@65b(IJYFTpdbfs zSaAs`e2ZbS75Qmt#i=DQZY3(WB)0(M8il;loE(VbV2%w=%q_@CEmF`>2#KgnFARv% z1k0mK8z>lBnkf{NmT>7OLv7B;FIT9pR!Au=P$;P^NLA2>h=bXwg$mUQ#UK^63e^hf zIh6$&P+n$QYEE&gLM^C?keHLBP^*xXnU?~#6J~OGW=cthLbZWHYDF?AFu)XEi@-qv z(FU>)Qk<2f<>!?s=))Tn>8T|U6Ad9$L1~GCMvQ@hp{4@F<uC)FP6S(PtYD~6l%JEM zkeHI9fWiSwWA%n-us_(+RE26#;N(Ce6_HXDstpw~^HNeP6!hIZT@>;_>Qd8c6{-vJ z3ls|S3u+Z0E`S@3@B?}yDJ3;c0qR?@`Kfs+3i=_bxdr(}iA9wVf2O3SW#*-V0|Pm* zgG)f=ymL-wfkJh4F_=@3SdvkzP+XE<P>`CUP_3W=Zr~xc;|hv0^GZ^S6w*^miWPD) zb2CelGg6bY74pkci_&uP%ZnAtGg9+36>JqWK*_BDRJkamBo=3+rYL~Ycd@ksgjOie z%*jzmN>zZEn4(aepOcxQkeOFplA4&J2Qnc#R>44_IJE?%9TY+N*{KlsWu_@4gIta5 z8P~GZynxJ#)SO~Sm>VeMCYBUsR=@%W%1bFJO3W)x%P-0WC)?c89B2@g7ASx?phzw* zEGhxZ7J-`8V3wgmP6;G-3_)=N)stBU)`RSfU`Q5q19`4mAC~E0u?>nWLj@$Kf>K9u za$-)Z0?21cN%<8DCJIK7^kxc8A}N_=U^f_m-C(FtT$%)SLvmTB0!$6a=_as*YDR=c zm>Q5qW0;LFL2$yZRxpB^1GB^!%CA;PFHS5=Re<>ltQ;J!If*5ya5urUl@yhx!Xg6} zAmBnVH?cTdA-yQIxFo*_S{{HBKcr*;v!K}l&PEPt#}rWU>71XFU!+j&?4w`=4jx!^ zrxztwDmeQn7$|@XB0W>EtU;|pH8=vHB~WG>D1Cv|f`b&<e3zoc@{rVu5`}7TF%Bws z!5#(0p+3lJP|1xDffct15m<SQ5P=ovNFv~Js~DP|QqvUlL74=(5&$Lq%)Insg=z(8 zu?s1rKtTgaJxJ=)L2gCj!>oanD<BVoy`7g@4oYm0U<MVy1_}lWx%p+OCHV^Ig??Hh zsHjfPNGt+t0TJLt3bGkd+rcb?cmw1zut;%fl7c?8#sdq0f(|4La{(gF6y=wIk`9vN zVW9^~ppe43SOHp&g0p}EEHFU|pq79#FDxEF!U*$W@r7goNCC{d3VEsN3JBFO`ye$A zMzF&S18D-80uMb%iI)nh@4y*E9~5v38WG?MRRLlexN^j(D618~N(~f@6?CE14XAR0 z7VHK2nRzA9Ob1p6&Qc&2C_*4*A++EDr&xHN0x5weAV{h~_z@c6@EV4+S`&-IpcN^x zPJ=3k1T{{_L8?JSQic1hR-qaiFQ8ThJZ&4mlLaVp5WYq7CZe$sk{ytdUy=_kLLg<D zu@O>(PC>r}RNJMe7C}-rDE;b#4Fz|`OB4*DfeUK9K++FX!axD86BLj7`8g?&+8NZI z0T}}m(055JNes>}ElN%W)v4fu9+E`TGILVFEKut}0h@Y6S}{=2&{WV5E=_XF%t>`g zP0mkARY=Rs0aer>>p^h~%6IT!($7mR2fGJmY;Ix&G;@K4kzEK=nw(!y2`-5B%N1Z^ z`r+V)8mL_b(xRVSR8WABggOKy3pLzGAroAifeO0fk|Kq2<nYrk$gEH(R{)y<%2tr1 z0S;RI;?ktzlA@f{JOv|#a)q4ybWm}hpRNEhEiETM9~40a3ZNPh><)<XVuff>8x*b; zYM=oq+Tena!lW9lGJ{1sB=kUISx8QRm=19a+&>6GNR^XXky!!?Z-rWgoc#O(1#o{s zK|cc#JRXp~04R7sjy6;%2Ybg*Ap=Z98!V940W6;MJwd$*Ur5Uaq!V1OLX{@x=OrhW zKsit<Gp{VQ2qp$mfZ+l|P^%sxij*QjF#-w#{oKS7h3IkxP)z}9j~hUI15XCXt^z3q z=>Y|E1|+BzszLR?f+<qz2FjiwRdA0X*$VO(D0LL2CZ<5+43v67SidAOGY6DtAjzTv z(%He9J3yv@+>gbSY6Y+{$T_(<HL)l;1DyTzQ}XjtAsId|zXWViH8_|-4uCPhQLA4L z?MOhAHz*p*4HXQ)4SJjbT7gL7<%S4$dMdccC@M?LL5&Yc9xI2$5-4;{6e_?K7AXAm zD-<de$_>Gt6Oi?=C;>OH6d=I`_H4N!#M4lxmP67#vZWyHU~hr_Uky*dVC|6P4QhoX z<|Sw37eT`d)L{YZffuk4E5X48G7zj8YA0I8&<EvqWO-0~0i*|-W57l#fci5?r9MXK z?VF#MuTYJ(@J=bs&8_szD@jEyz+p)a?naov@G6TzX}?^-9Go&NAmuJJGl9Z*v><{u zvtR|0fu4bZfdVpFoLW+po&*~EE+Vynf#pKv6a|V8P>zMkfpaLh3uFkk8kwY<)%f$6 zs;X;V3T&=N)d@7l6`Wd9TEL|b?r(txz`#l%g3yU3D+NOZLoQJJm&@3|OwT~U*b+p7 z3tLeCkjp^N+*AQffa^9cBL!U}Q)5W;39JCjH8n7UbxMp(EEPapP~*KMUjf8501qOR z<U_Q=dC58X#o#dlNShei&)@==4qUKO1UpyP$kaeV7i2c1Wy}Q@FgG=X+QelD>MDYq zkepb6;AG`z<{^0Cb}Se2xCIw-ih{6_BNwR?%LN&ML3gIEkpa593=9+ofx8UR!wV!Z z7~F*(UWS7sywHQobTGssYSJ1EE<y{YK@m!z6ogzffcOKS(n0wR#Z`kMtk8=q5P#sq z3cYX#@dw^jx~2x8UJ|szfp9=IOi4bXN}+RY19F6^A++Y@g7OA|n+y$590lSI23Mg5 zmEpj*7C<p(gc?>L?jQ&&Bh;`0aR-5`j8Vf1#2pN-LJce9!I7>^P{Rtu9Ry)zf*MvJ z?jUfLDQZ}OxC87eP(_RgDqT?P0g<f0T%<x3-0MK+BP%yBP(b4%6@C!iNb*p-p&_7a zYM@|hpl68;V7)9|6H7D+q~Z%~E;=8{8dE(p3ln1#LkkNt0}BI-R9!<8oE91C85kLx z8JL-w8W>p^n}8G>D<Bn05WA2JNA&}SGtoR`0rQY4xYK6<14ar+MGV*ubiOHgAONP` z0N($!L=PA=8_i)hf?B6YB?iP243B`u955{brwY`lF@u|HYM_9W=fUQp^Km&I9C)ba zn!?OAGC&C;Lj@BwpTQLB8lr`P0#arNI|t2rBbZJ+eRoq>w;oI19UK!l$ApONyJNTs z+T7DMGO$!IHA9I9xPx_#49pcUbi(ovNT&&IouI6V-B{v1l$xKGnUlkXJyZwM2e9Y@ y4ZMJ67g9?=p@Py%rfN*WmM4Iw84D8AQ$cH>Ly8hJb5e`AQu9){R8?L5-M9d(6H2Q9 diff --git a/Notebooks/imgs_chap5/img_exo_spirale (copie 1).py b/Notebooks/imgs_chap5/img_exo_spirale (copie 1).py new file mode 100644 index 0000000..74703db --- /dev/null +++ b/Notebooks/imgs_chap5/img_exo_spirale (copie 1).py @@ -0,0 +1,41 @@ +from turtle import * + +speed(0) +WIDTH, HEIGHT = 500, 500 + +screen = Screen() +screen.setup(WIDTH + 4, HEIGHT + 8) # fudge factors due to window borders & title bar + + +penup() +for k in range(21): + goto(-500+k*50,-500) + pendown() + goto(-500+k*50,500) + penup() +for k in range(20): + goto(-500,-500+k*50) + pendown() + goto(500,-500+k*50) + penup() + +goto(-200, -200) +pendown() +width(5) + +color("red") + +x = 400 +for _ in range(8): + forward(x) + left(90) + x = x - 50 + +shape('turtle') +penup() +goto(-200, -200) + +ts = getscreen() +ts.getcanvas().postscript(file="img_exo_spirale.eps") + +done() \ No newline at end of file diff --git a/Notebooks/imgs_chap5/img_exo_spirale.eps b/Notebooks/imgs_chap5/img_exo_spirale.eps new file mode 100644 index 0000000..a7e2a62 --- /dev/null +++ b/Notebooks/imgs_chap5/img_exo_spirale.eps @@ -0,0 +1,390 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Tk Canvas Widget +%%For: mathieu +%%Title: Window .!canvas +%%CreationDate: Wed Jan 15 22:14:23 2025 +%%BoundingBox: 117 206 495 586 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%Orientation: Portrait +%%EndComments + +%%BeginProlog +% This is a standard prolog for Postscript generated by Tk's canvas +% widget. +/CurrentEncoding [ +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle +/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash +/zero/one/two/three/four/five/six/seven +/eight/nine/colon/semicolon/less/equal/greater/question +/at/A/B/C/D/E/F/G +/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W +/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore +/grave/a/b/c/d/e/f/g +/h/i/j/k/l/m/n/o +/p/q/r/s/t/u/v/w +/x/y/z/braceleft/bar/braceright/asciitilde/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron +/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered +/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply +/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide +/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis +] def +50 dict begin +/baseline 0 def +/stipimage 0 def +/height 0 def +/justify 0 def +/lineLength 0 def +/spacing 0 def +/stipple 0 def +/strings 0 def +/xoffset 0 def +/yoffset 0 def +/tmpstip null def +/baselineSampler ( TXygqPZ) def +baselineSampler 0 196 put +/cstringshow {{ dup type /stringtype eq { show } { glyphshow } ifelse } forall } bind def +/cstringwidth {0 exch 0 exch { dup type /stringtype eq { stringwidth } { currentfont /Encoding get exch 1 exch put (\001) stringwidth } ifelse exch 3 1 roll add 3 1 roll add exch } forall } bind def +/ISOEncode {dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding CurrentEncoding def currentdict end /Temporary exch definefont } bind def +/StrokeClip {{strokepath} stopped { (This Postscript printer gets limitcheck overflows when) = (stippling dashed lines; lines will be printed solid instead.) = [] 0 setdash strokepath} if clip } bind def +/EvenPixels {dup 0 matrix currentmatrix dtransform dup mul exch dup mul add sqrt dup round dup 1 lt {pop 1} if exch div mul } bind def +/StippleFill {/tmpstip 1 index def 1 EvenPixels dup scale pathbbox 4 2 roll 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll 6 index exch { 2 index 5 index 3 index { gsave 1 index exch translate 5 index 5 index true matrix tmpstip imagemask grestore } for pop } for pop pop pop pop pop } bind def +/AdjustColor {CL 2 lt { currentgray CL 0 eq { .5 lt {0} {1} ifelse } if setgray } if } bind def +/DrawText {/stipple exch def /justify exch def /yoffset exch def /xoffset exch def /spacing exch def /strings exch def /lineLength 0 def strings { cstringwidth pop dup lineLength gt {/lineLength exch def} {pop} ifelse newpath } forall 0 0 moveto baselineSampler false charpath pathbbox dup /baseline exch def exch pop exch sub /height exch def pop newpath translate rotate lineLength xoffset mul strings length 1 sub spacing mul height add yoffset mul translate justify lineLength mul baseline neg translate strings { dup cstringwidth pop justify neg mul 0 moveto stipple { gsave /char (X) def { dup type /stringtype eq { { char 0 3 -1 roll put currentpoint gsave char true charpath clip StippleText grestore char stringwidth translate moveto } forall } { currentfont /Encoding get exch 1 exch put currentpoint gsave (\001) true charpath clip StippleText grestore (\001) stringwidth translate moveto } ifelse } forall grestore } {cstringshow} ifelse 0 spacing neg translate } forall } bind def +/TkPhotoColor {gsave 32 dict begin /tinteger exch def /transparent 1 string def transparent 0 tinteger put /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /crpp newdict /Decode get length 2 idiv def /str w string def /pix w crpp mul string def /substrlen 2 w log 2 log div floor exp cvi def /substrs [ { substrlen string 0 1 substrlen 1 sub { 1 index exch tinteger put } for /substrlen substrlen 2 idiv def substrlen 0 eq {exit} if } loop ] def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put olddict /DataSource get str readstring pop pop /tail str def /x 0 def olddict /DataSource get pix readstring pop pop { tail transparent search dup /done exch not def {exch pop exch pop} if /w1 exch length def w1 0 ne { newdict /DataSource pix x crpp mul w1 crpp mul getinterval put newdict /Width w1 put mat 4 x neg put /x x w1 add def newdict image /tail tail w1 tail length w1 sub getinterval def } if done {exit} if tail substrs { anchorsearch {pop} if } forall /tail exch def tail length 0 eq {exit} if /x w tail length sub def } loop } for end grestore } bind def +/TkPhotoMono {gsave 32 dict begin /dummyInteger exch def /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /pix w 7 add 8 idiv string def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put 0.000 0.000 0.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask 1.000 1.000 1.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask } for end grestore } bind def +%%EndProlog +%%BeginSetup +/CL 2 def +%%EndSetup + +%%Page: 1 1 +save +306.0 396.0 translate +0.75 0.75 scale +2 -253 translate +-253 506 moveto 249 506 lineto 249 0 lineto -253 0 lineto closepath clip newpath +gsave +grestore +gsave +grestore +gsave +-250 -249 moveto +-250 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-200 -249 moveto +-200 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-150 -249 moveto +-150 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-100 -249 moveto +-100 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-50 -249 moveto +-50 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +0 -249 moveto +0 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +50 -249 moveto +50 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +100 -249 moveto +100 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +150 -249 moveto +150 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +200 -249 moveto +200 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +250 -249 moveto +250 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 1 moveto +500 1 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 51 moveto +500 51 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 101 moveto +500 101 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 151 moveto +500 151 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 201 moveto +500 201 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 251 moveto +500 251 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 301 moveto +500 301 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 351 moveto +500 351 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 401 moveto +500 401 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 451 moveto +500 451 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 501 moveto +500 501 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-200 51 moveto +200 51 lineto +200 401 lineto +-100 401 lineto +-100 151 lineto +100 151 lineto +100 301 lineto +2.8421709430404e-14 301 lineto +6.99039044532532e-15 251 lineto +1 setlinecap +1 setlinejoin +5 setlinewidth +[] 0 setdash +1.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +grestore +gsave +-184 51 moveto +-186 53 lineto +-190 52 lineto +-193 55 lineto +-191 58 lineto +-192 60 lineto +-195 57 lineto +-199 58 lineto +-203 56 lineto +-206 59 lineto +-208 57 lineto +-205 55 lineto +-207 51 lineto +-205 47 lineto +-208 45 lineto +-206 43 lineto +-203 46 lineto +-199 44 lineto +-195 45 lineto +-192 42 lineto +-191 44 lineto +-193 47 lineto +-190 50 lineto +-186 49 lineto +-184 51 lineto +1.000 0.000 0.000 setrgbcolor AdjustColor +eofill +-184 51 moveto +-186 53 lineto +-190 52 lineto +-193 55 lineto +-191 58 lineto +-192 60 lineto +-195 57 lineto +-199 58 lineto +-203 56 lineto +-206 59 lineto +-208 57 lineto +-205 55 lineto +-207 51 lineto +-205 47 lineto +-208 45 lineto +-206 43 lineto +-203 46 lineto +-199 44 lineto +-195 45 lineto +-192 42 lineto +-191 44 lineto +-193 47 lineto +-190 50 lineto +-186 49 lineto +-184 51 lineto +1 setlinejoin 1 setlinecap +1 setlinewidth +[] 0 setdash +1.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +restore showpage + +%%Trailer +end +%%EOF diff --git a/Notebooks/imgs_chap5/img_exo_spirale.png b/Notebooks/imgs_chap5/img_exo_spirale.png index a7e2a622fd0ebcfed79f958abd77eae1cfae515e..53f0a70a7d96cf9997679b6b26c995fd0e2a2775 100644 GIT binary patch literal 2086 zcmeAS@N?(olHy`uVBq!ia0y~yV60+bV65R_W?*3Wrrxlhfq_9G*(1o8fuTx`fuW&= zf#DYe14F|L28L1t28LG&3=CE?7#PG0=IjczVPIg$3GfMV{r~?z0~q{gVEE6#FrR^8 z9hd>(l1(yz4e4ND5M*HZ&cNWp!0`Y7f8nep_6!URvL!)&!3-V81$Xa1-r-`r_1c%e z{lArdUHtkz^hnyJ`TN(unia-n&A`CGnB?v5!qCAg>%qXlz**oCS<Jw|0AhPExSh<l zV_;xlFY)wsWq--YFJ{da`poAr0|VP6PZ!6Kid%2zp7xV*6Jcd<W^BJP!)A{9geU*) zjXWk!3VqUDlK$$<!YW&>(CNo>&peaiYwzwp{J_S~PUV&8ikQt+A?qS-U$K6BclRh% zP~&p)iaY!JzrrN7uCI}snjO}E%5=5+(^*#+7oB|-xHFA@(xnw&9Mr#i2M(A6kUj60 zUsm}wq<)>A`b&Siuy6C;6?J{C+jOk#)0gWd(}L%`_WU*3-ohNjoPDyndCB}4ssC>8 zs5ls7d^tI7+3_<z{WE9E85`TCrB$6d^JT`&mxff9`1{g--~VralD_%$Ur>!P`0jo2 z|Jr_28d`|vshoyecdtmVy`H<w{n`z+<kaQ&ugqR^T{rH-n#=n6uXLlH@;%hGwKzSy zsypm!{@=>QZ5Ef`4-Mj6703HMfrsr+p2`3Fmiv|2xmUh67VWp6J62wne>iDo*s|km zeEK72%565XO-rphbLz{CsV@z+FDFx3;@%N~xMf#oOB_1ArApYjVrJOBue7lU%`>58 zzgEv)KkxPH_4Uu5J*)h*kn`26wM)+1<R@|Hf4;*1@b0D7|KI0S1i%0Cl7D+P|CdM6 z|C_A7E|Z(EPd2rRht_DSbxU~vDcM7--JkM3yt=sNwc(VPR7O_{FV+8eX7qB>%oRt! zOfN6jKlpz~t>*u?$NfF0pK;M$wtx5j{lEXbJm0?j{l5CDU0%CV)Upi!Uj2Ld@8!ex z%4YU8ejt(0YyW@T|963Y;Pf*txy$~)e0cwheEq(kPp{u^66<9OyzINz^Vj{CYuA0Y z_I9qQzxdta@MhDN=iC2XP2aTgd2~I`m5kv0N%!U#^fgI6__On$#R|rA|If;?n;!US zJ?HU)xc1*4j^2-1w~+2-w8itgn?JkFlym;eyZc7p7nO&i+zbp1$|bH5B?ZM+9+^R@ z#ZLL9c`2EB=}!3-494ab6~-0@+J=Va+C~Ou=1c!)GcYj7L6!TYmZjz}1O)3krsOB3 e>Kf}AD7Xd$yMY+D=ZSiQDsWF%KbLh*2~7Y5(h4{L literal 11663 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 YB8L<uX6B?8ai!*^aH*=g`nz!f06_*uU;qFB diff --git a/Notebooks/imgs_chap5/img_exo_triangles (copie 1).py b/Notebooks/imgs_chap5/img_exo_triangles (copie 1).py new file mode 100644 index 0000000..423556f --- /dev/null +++ b/Notebooks/imgs_chap5/img_exo_triangles (copie 1).py @@ -0,0 +1,46 @@ +from turtle import * + +speed(0) +WIDTH, HEIGHT = 500, 500 +L_carre = 25 + +screen = Screen() +screen.setup(WIDTH + 4, HEIGHT + 8) # fudge factors due to window borders & title bar + + +penup() +for k in range(2*WIDTH//L_carre + 1): + goto(-WIDTH+k*L_carre,-HEIGHT) + pendown() + goto(-WIDTH+k*L_carre,HEIGHT) + penup() +for k in range(2*HEIGHT//L_carre): + goto(-WIDTH,-HEIGHT+k*L_carre) + pendown() + goto(WIDTH,-HEIGHT+k*L_carre) + penup() + +# pour positionner le curseur en bas à gauche +penup() +goto(0, 0) +pendown() + +# mettre le bon style de trait +width(3) +color("red") + +def triangle(longueur): + for _ in range(3): + forward(longueur) + left(120) +# à compléter avec maximum 5 lignes +x = 200 +for _ in range(6): + triangle(x) + left(60) + x = x - 25 + +ts = getscreen() +ts.getcanvas().postscript(file="img_exo_triangles.eps") + +done() \ No newline at end of file diff --git a/Notebooks/imgs_chap5/img_exo_triangles.eps b/Notebooks/imgs_chap5/img_exo_triangles.eps new file mode 100644 index 0000000..8b94342 --- /dev/null +++ b/Notebooks/imgs_chap5/img_exo_triangles.eps @@ -0,0 +1,558 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Tk Canvas Widget +%%For: mathieu +%%Title: Window .!canvas +%%CreationDate: Wed Jan 15 23:19:34 2025 +%%BoundingBox: 117 206 495 586 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%Orientation: Portrait +%%EndComments + +%%BeginProlog +% This is a standard prolog for Postscript generated by Tk's canvas +% widget. +/CurrentEncoding [ +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle +/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash +/zero/one/two/three/four/five/six/seven +/eight/nine/colon/semicolon/less/equal/greater/question +/at/A/B/C/D/E/F/G +/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W +/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore +/grave/a/b/c/d/e/f/g +/h/i/j/k/l/m/n/o +/p/q/r/s/t/u/v/w +/x/y/z/braceleft/bar/braceright/asciitilde/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron +/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered +/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply +/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide +/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis +] def +50 dict begin +/baseline 0 def +/stipimage 0 def +/height 0 def +/justify 0 def +/lineLength 0 def +/spacing 0 def +/stipple 0 def +/strings 0 def +/xoffset 0 def +/yoffset 0 def +/tmpstip null def +/baselineSampler ( TXygqPZ) def +baselineSampler 0 196 put +/cstringshow {{ dup type /stringtype eq { show } { glyphshow } ifelse } forall } bind def +/cstringwidth {0 exch 0 exch { dup type /stringtype eq { stringwidth } { currentfont /Encoding get exch 1 exch put (\001) stringwidth } ifelse exch 3 1 roll add 3 1 roll add exch } forall } bind def +/ISOEncode {dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding CurrentEncoding def currentdict end /Temporary exch definefont } bind def +/StrokeClip {{strokepath} stopped { (This Postscript printer gets limitcheck overflows when) = (stippling dashed lines; lines will be printed solid instead.) = [] 0 setdash strokepath} if clip } bind def +/EvenPixels {dup 0 matrix currentmatrix dtransform dup mul exch dup mul add sqrt dup round dup 1 lt {pop 1} if exch div mul } bind def +/StippleFill {/tmpstip 1 index def 1 EvenPixels dup scale pathbbox 4 2 roll 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll 6 index exch { 2 index 5 index 3 index { gsave 1 index exch translate 5 index 5 index true matrix tmpstip imagemask grestore } for pop } for pop pop pop pop pop } bind def +/AdjustColor {CL 2 lt { currentgray CL 0 eq { .5 lt {0} {1} ifelse } if setgray } if } bind def +/DrawText {/stipple exch def /justify exch def /yoffset exch def /xoffset exch def /spacing exch def /strings exch def /lineLength 0 def strings { cstringwidth pop dup lineLength gt {/lineLength exch def} {pop} ifelse newpath } forall 0 0 moveto baselineSampler false charpath pathbbox dup /baseline exch def exch pop exch sub /height exch def pop newpath translate rotate lineLength xoffset mul strings length 1 sub spacing mul height add yoffset mul translate justify lineLength mul baseline neg translate strings { dup cstringwidth pop justify neg mul 0 moveto stipple { gsave /char (X) def { dup type /stringtype eq { { char 0 3 -1 roll put currentpoint gsave char true charpath clip StippleText grestore char stringwidth translate moveto } forall } { currentfont /Encoding get exch 1 exch put currentpoint gsave (\001) true charpath clip StippleText grestore (\001) stringwidth translate moveto } ifelse } forall grestore } {cstringshow} ifelse 0 spacing neg translate } forall } bind def +/TkPhotoColor {gsave 32 dict begin /tinteger exch def /transparent 1 string def transparent 0 tinteger put /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /crpp newdict /Decode get length 2 idiv def /str w string def /pix w crpp mul string def /substrlen 2 w log 2 log div floor exp cvi def /substrs [ { substrlen string 0 1 substrlen 1 sub { 1 index exch tinteger put } for /substrlen substrlen 2 idiv def substrlen 0 eq {exit} if } loop ] def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put olddict /DataSource get str readstring pop pop /tail str def /x 0 def olddict /DataSource get pix readstring pop pop { tail transparent search dup /done exch not def {exch pop exch pop} if /w1 exch length def w1 0 ne { newdict /DataSource pix x crpp mul w1 crpp mul getinterval put newdict /Width w1 put mat 4 x neg put /x x w1 add def newdict image /tail tail w1 tail length w1 sub getinterval def } if done {exit} if tail substrs { anchorsearch {pop} if } forall /tail exch def tail length 0 eq {exit} if /x w tail length sub def } loop } for end grestore } bind def +/TkPhotoMono {gsave 32 dict begin /dummyInteger exch def /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /pix w 7 add 8 idiv string def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put 0.000 0.000 0.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask 1.000 1.000 1.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask } for end grestore } bind def +%%EndProlog +%%BeginSetup +/CL 2 def +%%EndSetup + +%%Page: 1 1 +save +306.0 396.0 translate +0.75 0.75 scale +2 -253 translate +-253 506 moveto 249 506 lineto 249 0 lineto -253 0 lineto closepath clip newpath +gsave +grestore +gsave +grestore +gsave +-250 -249 moveto +-250 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-225 -249 moveto +-225 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-200 -249 moveto +-200 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-175 -249 moveto +-175 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-150 -249 moveto +-150 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-125 -249 moveto +-125 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-100 -249 moveto +-100 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-75 -249 moveto +-75 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-50 -249 moveto +-50 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-25 -249 moveto +-25 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +0 -249 moveto +0 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +25 -249 moveto +25 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +50 -249 moveto +50 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +75 -249 moveto +75 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +100 -249 moveto +100 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +125 -249 moveto +125 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +150 -249 moveto +150 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +175 -249 moveto +175 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +200 -249 moveto +200 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +225 -249 moveto +225 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +250 -249 moveto +250 751 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 1 moveto +500 1 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 26 moveto +500 26 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 51 moveto +500 51 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 76 moveto +500 76 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 101 moveto +500 101 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 126 moveto +500 126 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 151 moveto +500 151 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 176 moveto +500 176 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 201 moveto +500 201 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 226 moveto +500 226 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 251 moveto +500 251 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 276 moveto +500 276 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 301 moveto +500 301 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 326 moveto +500 326 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 351 moveto +500 351 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 376 moveto +500 376 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 401 moveto +500 401 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 426 moveto +500 426 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 451 moveto +500 451 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 476 moveto +500 476 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-500 501 moveto +500 501 lineto +1 setlinecap +1 setlinejoin +1 setlinewidth +[] 0 setdash +0.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +0 251 moveto +200 251 lineto +100 424.205080756888 lineto +-2.8421709430404e-14 251 lineto +87.5000000000001 402.554445662277 lineto +-87.4999999999999 402.554445662277 lineto +-1.13686837721616e-13 251 lineto +-74.9999999999999 380.903810567666 lineto +-150 251 lineto +-1.13686837721616e-13 251 lineto +-125 251 lineto +-62.5000000000004 142.746824526945 lineto +-9.2370555648813e-14 251 lineto +-50.0000000000003 164.397459621556 lineto +49.9999999999996 164.397459621556 lineto +-6.3948846218409e-14 251 lineto +37.4999999999997 186.048094716167 lineto +74.9999999999999 251 lineto +-4.2632564145606e-14 251 lineto +1 setlinecap +1 setlinejoin +3 setlinewidth +[] 0 setdash +1.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +gsave +-4.2632564145606e-14 251 moveto +-9.00000000000002 256 lineto +-7.00000000000004 251 lineto +-9.00000000000007 246 lineto +-4.2632564145606e-14 251 lineto +1.000 0.000 0.000 setrgbcolor AdjustColor +eofill +-4.2632564145606e-14 251 moveto +-9.00000000000002 256 lineto +-7.00000000000004 251 lineto +-9.00000000000007 246 lineto +-4.2632564145606e-14 251 lineto +1 setlinejoin 1 setlinecap +1 setlinewidth +[] 0 setdash +1.000 0.000 0.000 setrgbcolor AdjustColor +stroke +grestore +restore showpage + +%%Trailer +end +%%EOF diff --git a/Notebooks/imgs_chap5/img_exo_triangles.png b/Notebooks/imgs_chap5/img_exo_triangles.png index 8b94342e4b83598e74b6ad61576ae4322a95b4e8..55d249b355c0554f21cfe9d978ed895a9329c3e7 100644 GIT binary patch literal 5251 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 LS3j3^P6<r_An2@D literal 14630 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 -- GitLab