automne.py

Created by schraf

Created on September 22, 2020

1.28 KB

Inspiré par un commentaire de Numworks France

Ce script utilise une technique que j’ai décrite ici

Un autre exemple ici

```from turtle import *

NB = 10
svg = ['M',41,114,'C',50,104,55,107,62,109,32,136,42,163,54,172,57,137,60,110,94,131,86,147,78,149,70,154,70,154,86,121,86,121,'M',8,38,'C',33,58,73,82,86,85,99,88,97,84,109,90,121,96,144,131,151,134,158,137,181,124,187,119,192,114,183,110,184,109,'M',141,63,'C',141,70,140,76,134,80,128,83,103,82,95,79,91,63,130,51,140,38,144,42,146,49,148,55,'M',189,121,'C',193,124,194,129,202,127,210,125,234,109,238,111,241,113,242,129,239,131,237,134,224,139,222,125,209,126,205,145,201,146,198,147,201,137,201,132,'M',248,127,'C',258,125,271,132,281,132,292,131,307,131,311,101]
hideturtle()

def move(x,y):
goto(x-160,110-y)

def coord(a,b,c,d,t):
return a*(1-t)**3+3*b*t*(1-t)**2+3*t*c*t*(1-t)+d*t**3

def bezier(l):
pendown()
t = 0
for i in range(NB+1):
x = coord(l[0],l[2],l[4],l[6],t)
y = coord(l[1],l[3],l[5],l[7],t)
move(x,y)
t += 1/NB

def dessin(svg,c,e):
pensize(e)
color(c)
i = 0
while i<len(svg):
if svg[i] == "M":
l = [svg[i+1],svg[i+2]]
penup()
move(l[0], l[1])
i += 3
elif svg[i] == "Z" or svg[i] == "C": i += 1
else:
for j in range(6): l.append(svg[i+j])
bezier(l)
l = [svg[i+4],svg[i+5]]
i += 6

for k in range(10,0,-2):
c = 24*k
dessin(svg,(c,c,c),k)```