Welcome, guest | Sign In | My Account | Store | Cart

This program was written per R.T.Giles's second assignment in 10COF180 (November 25, 2010). A student under his instruction wanted help writing a program, and while not required, a GUI was placed on the program's output to visually demonstrate what was taking place within the program. The recipe below provides a simple simulation of a undamped pendulum and produces a visual representation for about thirty seconds. The code could be greatly improved but gives a demonstration of what a few turtle commands can do in Python. Very little code must be written to produce graphics on the computer screen.

Python, 47 lines
 ``` 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``` ```from math import sin, pi from time import sleep from turtle import * GA = 9.80665 # Gravitational Acceleration (meters per second squared) FORM = 'Time={:6.3f}, Angle={:6.3f}, Speed={:6.3f}' def main(): length = 9.0 # Of pendulum (meters) ngol = - GA / 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) time_step = 0.05 # Seconds while total_time < 30.0: total_time += time_step speed += ngol * sin(angle) * time_step angle += speed * time_step #print(FORM.format(total_time, angle, speed)) if draw(angle, length): break sleep(time_step) def init(): setup() mode('logo') radians() speed(0) hideturtle() tracer(False) penup() def draw(angle, length): if speed() != 0: return True clear() setheading(angle + pi) pensize(max(round(length), 1)) pendown() forward(length * 25) penup() dot(length * 10) home() update() if __name__ == '__main__': init() main() bye() ``` Created by Stephen Chappell on Thu, 27 Jan 2011 (MIT)