By the way, here is a non-OO version of a the fractals program that uses Pygame
to display the output.
Warren Sande
#-------------------------
# Simple fractal program using Pygame to display results
# (Based on Kirby Urner's OO version)
import pygame, sys
palette = [(0,0,0)]
def mkpalette():
global palette
for i in range(0,255):
palette.append((i*5%200 + 20, i*7%200 + 20, i*11%200 + 20))
return palette
def compute_fractal(n, uleft_x, uleft_y, lright_x, lright_y):
global pixels
xwidth = lright_x - uleft_x
ywidth = uleft_y - lright_y
pixels = []
for x in range (500):
pixel_row = []
for y in range (500):
percentx = x/500.0
percenty = y/500.0
xp = uleft_x + percentx * xwidth
yp = uleft_y - percenty * ywidth
z = complex(xp,yp)
o = complex(0,0)
dotcolor = 0
for trials in range(n):
if abs(o) <= 2.0:
o = o**2 + z
else:
dotcolor = trials
break
pixel_row.append(palette[dotcolor])
pixels.append(pixel_row)
mkpalette()
pixels = []
print "computing fractal..."
compute_fractal(64, -2, 1.25, 0.5, -1.25)
print "done."
screen = pygame.display.set_mode((500,500))
f_surf = pygame.Surface((500, 500))
for x in range(500):
for y in range(500):
f_surf.set_at((x, y), pixels[x][y])
screen.blit(f_surf, [0,0,500,500])
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
#-------------------------
----- Original Message ----
From: Warren Sande <[EMAIL PROTECTED]>
To: edu-sig@python.org
Sent: Tuesday, March 11, 2008 12:20:02 AM
Subject: Re: [Edu-sig] Introducing Python to Engineering Students
David,
For output graphics, you might want to have a look at Pygame. It is a wrapper
for the SDL library. It has functionality for creating graphics windows,
drawing, sprites, etc. But what might be of interest for you is the simple
set_at(x,y) method, to set the color of individual pixels in a window.
I have found the Pygame documentation to be pretty good.
Here is a simple example of plotting a sinewave using set_at()
#-----------------------------
import pygame, sys, math
screen = pygame.display.set_mode([640,480])
for x in range(0, 640):
y = int(math.sin(x/640.0 * 4 * math.pi) * 200 + 240)
screen.set_at([x, y],[255,0,0])
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
#------------------------------
Warren Sande
----- Original Message ----
From: David MacQuigg <[EMAIL PROTECTED]>
To: edu-sig@python.org
Sent: Monday, March 10, 2008 10:28:21 PM
Subject: [Edu-sig] Introducing Python to Engineering Students
I've been asked to give an intro to Python for a freshman class with 150
students at University of Arizona. The class is taught in the Electrical and
Computer Engineering Department, and is titled Computer Programming for
Engineering Applications. The language is C (Hanly & Koffman, Problem Solving
and Program Design in C).
I think a nice way to do this will be an application where we can show the
advantages of both languages - the computation of Mandelbrot images
http://en.wikipedia.org/wiki/Mandelbrot_set. Python will provide the
high-level "glue" which brings everything together in a nice programming
environment, and C will provide the raw power for the loop that actually
computes the pixels. My initial tests show this loop running about 100 times
faster in C than in Python.
The challenge is to do this without overwhelming the students. The plan is to
make everything as simple as possible, just follow the instructions, except the
loop itself, which the students will write in C, based on what I have written
in Python. See
http://ece.arizona.edu/~edatools/ece175/projects/mandelbrots/mbrotHW.html.
Suggestions are welcome. Has anyone done something like this before? Can you
improve on my code (I'm not a Python expert), or even suggest something
entirely different?
There is one major piece I would like to add to what I have so far - output
graphics. This demo would really be cool if the students could see these
glorious images appear on their screen instead of an array of numbers. I
looked at the Python Imaging Library
http://www.pythonware.com/products/pil/index.htm, and I don't see any examples
that I can work from in converting an array of numbers into an image, just a
lot of dense reference material that assumes I already know these image data
formats. Maybe there is a simpler way. Help from someone with experience in
Python graphics would be most appreciated.
-- Dave
_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig
-----Inline Attachment Follows-----
_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig
_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig