from math import * from turtle import * def dist(a, b): return sqrt((a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2) def angle(a, b): return degrees(atan2(b[1] - a[1], b[0] - a[0])) def point(a): penup() goto(a) pendown() pensize(4) goto(position()) pensize(1) def segment(a, b, coul, dash=True): color(coul) r = dist(a, b) penup() point(a) if not(dash):pensize(3) setheading(angle(a, b)) for i in range(r): penup() if i % 5 and dash else pendown() fd(1) point(b) def avance(a, b, d): penup() goto(a) setheading(angle(a, b)) fd(d) pendown() pensize(4) goto(position()) def cercle(a, b, r, coul): color(coul) avance(a, b, r) b = position() segment(a, b, coul) p = position() point(p) setheading(heading() + 90) circle(int(r)) speed(1) cercle((0, 0), (50, 0), 50, "grey") for i in range(6): cs1, ss1 = 50 * cos(2 * i * pi / 6), 50 * sin(2 * i * pi / 6) cercle((cs1, ss1), (0, 0),50, "grey") p = pi/6 pt = [] for i in range(6): cs1, ss1 = 50 * sqrt(3) * cos(2 * i * pi / 6+p), 50 * sqrt(3) * sin(2 * i * pi / 6+p) pt.append((cs1,ss1)) cs2, ss2 = 50 * cos(2 * i * pi / 6), 50 * sin(2 * i * pi / 6) cercle((cs1, ss1), (cs2, ss2),50, "grey") for i in range(6): segment(pt[i], pt[(i+1)%6],'red',False) for i in range(3): segment(pt[2*i], (0,0),'red',False) hideturtle()