##----- Importation des Modules -----##
from turtle import *
from math import *
##----- Définition des Fonctions -----##
def pgcd(a, b):
"""Déterminer le pgcd entre deux nombres."""
quotient = a//b
reste = a%b
while reste != 0 :
a = b
b = reste
quotient, reste = a//b, a%b
return b
def simplifier(a, b):
"""Renvoie les valeurs simplifiées du numérateur et du dénominateur d'une fraction."""
p = pgcd(a, b)
a = a//p
b = b//p
return (a, b)
def ecrire(a, b):
"""Renvoie l'écriture de la forme irréductible de la fraction a/b."""
a, b = simplifier(a, b)
if b == 1:
return str(a)
else:
return str(a)+'/'+str(b)
##----- Déclaration des Variables -----##
n = int(numinput('Saisie d\'un nombre', 'Donner la valeur d\'un entier n'))
d = int(numinput('Saisie d\'un autre nombre', 'Donner la valeur d\'un entier d'))
k = n/d
stylo = Pen()
##----- Écriture de la fraction simplifiée -----##
stylo.up()
stylo.goto(-120, 120)
stylo.down()
stylo.write('k = '+ecrire(n, d))
##----- Tracé de la rosace -----##
angle = 0
stylo.up()
stylo.goto(0, 100)
stylo.down()
stylo.width(2)
if k%2 == 1: # Pour gérer au mieux le nombre de répétitions
tours = 1
else:
tours = 2*simplifier(n, d)[1]
while angle <= tours*pi:
angle += pi/72
x = 100*cos(k*angle)*sin(angle) # On multiplie par 100 pour y voir quelque chose...
y = 100*cos(k*angle)*cos(angle)
stylo.goto(x, y)
stylo.hideturtle()
exitonclick()