1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| # -*- coding: cp1252 -*-
from math import sin, pi
from time import sleep
from turtle import *
g = 9.80665 # Gravitational Acceleration (meters per second squared)
FORM = 'Time={:6.3f}, Angle={:6.3f}, Speed={:6.3f}' #??#
def main(): # définir certains paramètres#
length = 9.0 # Of pendulum (meters)
f_rappel = - g / length # Negative G over L
total_time = 0.0 # Seconds (??)
angle = 1.0 # Initial angle of pendulum (radians)
speed = 0.0 # Initial angular velocity (radians/second) si différent de 0, impose force extérieure ?? #
time_step = 0.05 # nouvele affichage tout les 0.05 sec, Seconds : nombre de secondes entre chaque image (fluidité) / # on ne fait plus rien pdt time step de milli seconde
while total_time < 30.0: # boucle pendant 30 s temps d'affichage Turtle # tout les x temps, la / # on ne fait plus rien pdt time step de milli seconde
total_time += time_step # a t=0;05 puis t1 = 0.1, t2 = 0.15 conditions pour que Turtle fonctionne
speed += f_rappel * sin(angle) * time_step # si teta point = ...
angle += speed * time_step # integrer => teta =
#print(FORM.format(total_time, angle, speed))
if draw(angle, length): break #??# angle evolue en fonction du temps et en fonction de la longueur
sleep(time_step) #??# pause
# pour que ca aille moins vite = time step
# changer f rappel qui n'est plus une constante on le met dans speed += f_rappel * sin(angle ....
# variation = vitesse
def init():
setup()
mode('logo')
radians()
speed(0)
hideturtle()
tracer(False)
penup()
def draw(angle, length):# affichage, defini taille crayon, avance d'une distane et puis retourne à l'origine
if speed() != 0: return True # != : différent de #
clear() # effacer ecran
setheading(angle + pi) # orientation de la fonction avec l'angle => oscille, tour de 180°#
pensize(max(round(length), 1 )) # taille de crayon
pendown() # abaissez le crayon
forward(length * 25) #longueur de la corde affichée # va en avant de telle distance
penup() # leve le crayon ; si on releve pas le crayon, dessine le trajet du retour au point d'origine
# Il faut inserer ici la couleur set color blue ....
dot(length * 10) # Modifie taille de la bille # afficher le point
home() # Point d'origine du pendule à (0,0) => comment le modifier ? retroune au point d'origine (O.O)
update() # synchronisation
if __name__ == '__main__':
init()
main()
bye() |
Partager