{"id":1079,"date":"2022-11-09T09:03:06","date_gmt":"2022-11-09T08:03:06","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/mathsinfo\/?page_id=1079"},"modified":"2022-11-10T11:24:32","modified_gmt":"2022-11-10T10:24:32","slug":"processing-python","status":"publish","type":"page","link":"https:\/\/blog.univ-angers.fr\/mathsinfo\/processing-python\/","title":{"rendered":"Processing Python (P5Py)"},"content":{"rendered":"\n<p>Vous pouvez tester par copier\/coller les diff\u00e9rents codes ici : <a rel=\"noreferrer noopener\" href=\"https:\/\/console.basthon.fr\/\" target=\"_blank\">https:\/\/console.basthon.fr\/<\/a><\/p>\n\n\n\n<p>Cette page reprend la traduction en Processing Python de script trouv\u00e9s sur la <a rel=\"noreferrer noopener\" href=\"https:\/\/twitter.com\/akira2768922\" target=\"_blank\">page Twitter d&rsquo;Akira<\/a>.<\/p>\n\n\n\n<p>Si vous ne connaissez pas P5 version Python, voici mes vid\u00e9os d&rsquo;initiation : <\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Initiation \u00e0 p5* version Python - Partie 1\" width=\"584\" height=\"329\" src=\"https:\/\/www.youtube.com\/embed\/6rsgFVPpoJU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Initiation \u00e0 p5* version Python - Partie 2\" width=\"584\" height=\"329\" src=\"https:\/\/www.youtube.com\/embed\/46rLEuauPqo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Initiation \u00e0 p5* version Python - Partie 3\" width=\"584\" height=\"329\" src=\"https:\/\/www.youtube.com\/embed\/ZmaIHX9RLZ4?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Initiation \u00e0 p5* version Python - Partie 4\" width=\"584\" height=\"329\" src=\"https:\/\/www.youtube.com\/embed\/hae4QbC9R7w?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Initiation \u00e0 p5* version Python - Partie 5\" width=\"584\" height=\"329\" src=\"https:\/\/www.youtube.com\/embed\/YMiIaRZdMb0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Animations complexes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Roue color\u00e9e (d&rsquo;apr\u00e8s un tweet d&rsquo;Akira <a href=\"https:\/\/twitter.com\/akira2768922\" target=\"_blank\" rel=\"noreferrer noopener\">twitter.com\/akira2768922<\/a>)<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/roue.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"568\" height=\"272\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/roue.gif\" alt=\"\" class=\"wp-image-1096\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Code \u00e0 copier\/coller dans <a rel=\"noreferrer noopener\" href=\"https:\/\/console.basthon.fr\/\" target=\"_blank\">https:\/\/console.basthon.fr\/<\/a> puis <strong>Ex\u00e9cuter<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\nfrom math import pi\n\ndef A(a):\n  for n in range(9):\n    stroke(0 if a else 7)\n    T(0, 45)\n    fill((8 - n + int(f)) % 8, 2, 8)\n    box(2, 89)\n    T(0, 45)\n    Z(a)\n\ndef setup():\n    global T, Z, P, f\n    createCanvas(900, 600, WEBGL)\n    colorMode(HSB, 8)\n    T, Z = translate, rotateZ\n    P, f = pi \/ 4, 0\n\ndef draw():\n    global f\n    background(7)\n    rotateX(12)\n    Z(2 * P)\n    T(90, f % 1 * 90 - 90)\n    push()\n    A(0)  \n    pop()\n    Z(f % 1 * P)\n    A(P)\n    f += .05\n  \nrun() <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Chainette (d&rsquo;apr\u00e8s Akira)<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/chainette.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"374\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/chainette.gif\" alt=\"\" class=\"wp-image-1098\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\nfrom math import pi\n\ndef setup():\n    global T, Y, P, f, W\n    W = 600\n    createCanvas(W, W, WEBGL)\n    T, Y = translate, rotateY\n    f = 0\n    noStroke()\n    frameRate(40)\n\ndef draw():\n    global f\n    background(0)\n    f += 1\n    T(0, -W, 300)\n    Y(pi \/ 60 * f)\n    for i in &#091;5, 9, -9]:\n      j = -i * W    \n      spotLight(W, W, W, j, j, 0, i, i, 0)\n    for j in range(30,0,-1):\n        T(8,34)\n        for i in range(200,0,-1):\n            T(0,.5)\n            sphere(3)\n            if int(i \/ 50) % 2: rotateZ(pi \/ 50)\n        T(-8, 0)\n        Y(pi \/ 2)\n\nrun() <\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Scoubidou<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/scoubidou.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"418\" height=\"424\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/scoubidou.gif\" alt=\"\" class=\"wp-image-1094\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\nfrom math import pi, sin\n\ndef setup():\n    global t, W\n    W = 600\n    createCanvas(W, W, WEBGL)\n    t = 0\n\ndef draw():\n    global t\n    background(W)\n    noStroke()\n    lights()    \n    t += 1\n    for j in range(3, 0, -1):\n      for i in range(W \/\/ 3):\n          push()\n          fill(210 + j * 20, 250 - j * 20, 255)\n          r = pi * (i - t + j * 120) \/ 90\n          translate(50 * sin(r) - 70 + i * 2, \\\n                    20 * sin(r * 2) - i * 3 + 90, \\\n                    200 - i * 4)\n          sphere(20)\n          pop()\n\nrun() <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00e9veloppement d&rsquo;un cube (script Akira)<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/cube.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"412\" height=\"318\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/cube.gif\" alt=\"\" class=\"wp-image-1100\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\nfrom math import pi, cos\n\ndef setup():\n    global t, T\n    createCanvas(900, 600, WEBGL)\n    colorMode(HSB, 6)\n    T = translate\n    t = 0\n\ndef draw():\n    global t\n    t += .01\n    u = cos(t)\n    r = (u + 1) * pi \/ 4\n    background(200)\n    p = -150 + 50 * u \n    T(p, p, -50)\n    for i in range(6):\n        fill(i, 4, 6, 3)\n        square(0, 0, 100)\n        if i % 2:\n            T(0, 100, 0)\n            rotateX(r)\n        else:\n            T(100, 0, 0)\n            rotateY(-r)\n    \nrun() <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Marches (script Akira)<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/marches.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"340\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/marches.gif\" alt=\"\" class=\"wp-image-1102\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\n\ndef setup():\n    global t, Y\n    createCanvas(900, 600, WEBGL)\n    Y = rotateY\n    t = 0\n    colorMode(HSB,9)\n\ndef draw():\n    global t\n    background(240)\n    t += .01\n    rotateX(-.2)\n    Y(.3)\n    for i in range(31):\n        push()\n        u = t % 1       \n        Y((-21 + i + u) \/ 3)\n        translate(0,(22 - i - u) * 40, 180)\n        if i &lt; 21:\n            fill(7,4)\n            stroke(3)\n        else:\n            c = (t - u + 30 - i) % 9\n            fill(c, 5, 9, 4)\n            stroke(c, 5, 9)\n        box(60, 9, 120)\n        pop()  \n    translate(0, (u - .5) ** 2 * 180 - 20, 180)\n    rotateZ(-TAU * u)\n    fill(t % 9, 5, 9, 5)\n    stroke(t % 9, 5, 8)    \n    box(20)       \nrun()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Pendule de newton (script akira)<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/newton-1.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"612\" height=\"442\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/newton-1.gif\" alt=\"\" class=\"wp-image-1105\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\nfrom math import pi, cos\n\ndef setup():\n    global f, W, T\n    W = 600\n    createCanvas(900, W, WEBGL)\n    f, T = 0, translate\n\ndef draw():\n    global f\n    background(0)\n    noStroke()\n    f += 1\n    for i in &#091;5, 9, -9]:\n      j = -i * W    \n      spotLight(W, W, W, j, j, 0, i, i, 0)\n    for n in range(24,0,-1):\n        push()\n        T(0, -300, 30 * n - W)\n        rotateZ(cos(pi * f \/ 1800 * (60 - n)) \/ 2)\n        l = 120 + 5 * n \n        T(0, l)\n        cylinder(1, 2 * l)\n        T(0, l)\n        ellipsoid(20)\n        pop()\nrun() <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cercles concentriques<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/multiple.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"352\" height=\"324\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/multiple.gif\" alt=\"\" class=\"wp-image-1109\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\n\ndef setup():\n    global f,W\n    W = 600\n    createCanvas(900, W, WEBGL)\n    f = 0\n\ndef draw():\n    global f\n    background(0)\n    noStroke()\n    f += 1\n    for i in &#091;5, 8, -9]:\n      j = -i * W    \n      spotLight(W, W, W, j, j, 0, i, i, 0)\n    for n in range(9,0,-1):\n        r = 30 * n + 1\n        torus(r, 9, 99)\n        for a in &#091;-1,1]:\n            push()\n            translate(0, (r + 15) * a)\n            cylinder(3, 9)\n            pop()\n        rotateZ(.4)\n        rotateY(TAU * f \/ W)\nrun() <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Rangements de cartons<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/cubes.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"390\" height=\"350\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/cubes.gif\" alt=\"\" class=\"wp-image-1112\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\nfrom math import pi\n\ndef setup():\n    global t, W, T, X, Z\n    W = 600\n    createCanvas(900, W, WEBGL)\n    t, T, X, Z = 0, translate, rotateX, rotateZ\n\ndef draw():\n    global t\n    background(W)\n    lights()\n    t += 1\n    Q = pi \/ 2\n    rotateY(Q)\n    Z(.9)\n    for j in range(26, 0, -1):\n        push()\n        u = t \/ 60 % 2\n        T(0, 98 * (u - j + 3))\n        X(0 if j % 2 else 2*Q)\n        for i in range(6, 0, -1):\n            box(1, 97)\n            X(-Q if i % 2 else Q)\n            T(0, 49)\n            Z(map(i - u + j, 7, 8, Q, 0, 1))\n            T(0, 49)\n        pop()\t\nrun() <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Boules<\/h3>\n\n\n\n<p>Le code ci-dessous est une adaptation en Python d&rsquo;un <a href=\"https:\/\/twitter.com\/KomaTebe\" target=\"_blank\" rel=\"noreferrer noopener\">script de Koma Tebe<\/a><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/boules.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"352\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/boules.gif\" alt=\"\" class=\"wp-image-1114\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\n\ndef setup():\n    global f, W, T\n    W, T = 400, translate\n    createCanvas(900, W, WEBGL)\n    f = 0\n\ndef draw():\n\tglobal f\n\tbackground(0)\n\tf += 1\n\trotateX(-.8)\n\tfor i in &#091;W, -W, 100]: pointLight(&#091;i],0,-i,i)\n\ti = 0\n\twhile i &lt; TAU:\n\t\ti += TAU \/ 5000\n\t\tpush()\n\t\trotateY(noise(i * W) * TAU * 2)\n\t\tF = (f + 100 * i) % W + i\n\t\tY = -100 * abs(sin(f \/ 44 - F \/ 33))\n\t\tT(F, Y)\n\t\tfill(-3 * Y)\n\t\tsphere(4 - F \/ 100, W)\n\t\tpop()\t\t\n\nrun() <\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Escargot (script de Koma Tebe)<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/escargot.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"406\" height=\"336\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2022\/11\/escargot.gif\" alt=\"\" class=\"wp-image-1116\" \/><\/a><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>from p5 import *\nfrom math import sin, cos\n\ndef setup():\n    global f, W, T\n    W, T = 400, translate\n    createCanvas(600, W, WEBGL)\n    f = 0\n    frameRate(20)\n\ndef draw():\n    global f\n    background(0)\n    for i in &#091;8,-8,9]: spotLight(W,W,W,0,-W*i,W,0,i,-1)\n    for j in range(64):\n        i = PI * j \/ 64\n        push()\n        rotate(i * sin(i + f \/ 9))\n        T(6 * i, i)\n        rotateX(2 * i * cos(i - f \/ 9))\n        torus(40 * i, 2 * TAU - 2 * i, W)\n        scale(noise(i - f) \/ .8)\n        pop()\n        f += .01\n\t\nrun()<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Vous pouvez tester par copier\/coller les diff\u00e9rents codes ici : https:\/\/console.basthon.fr\/ Cette page reprend la traduction en Processing Python de script trouv\u00e9s sur la page Twitter d&rsquo;Akira. Si vous ne connaissez pas P5 version Python, voici mes vid\u00e9os d&rsquo;initiation : &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/processing-python\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4913,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1079","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/pages\/1079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/users\/4913"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/comments?post=1079"}],"version-history":[{"count":22,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/pages\/1079\/revisions"}],"predecessor-version":[{"id":1119,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/pages\/1079\/revisions\/1119"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/media?parent=1079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}