diffusion simulation

来源:互联网 发布:软件著作权 英文 编辑:程序博客网 时间:2024/04/28 22:56
### simulation of particles diffusion


import simplegui
import random


# Golbal constants
WIDTH = 600; HEIGHT = 400; PARTICLE_RADIUS = 5; VEL = 4
COLOR_LIST = ["Red", "White", "Aqua", "Blue"]
DIRECTION_LIST = [[VEL,0],[-VEL,0],[0, VEL],[0,-VEL]]


# definition of a particle class
class particle:
    def __init__(self, pos, color):
        self.pos = pos
        self.color = color
    def move(self, offset):
        self.pos[0] += offset[0]
        self.pos[1] += offset[1]
    def draw(self, canvas):
        canvas.draw_circle(self.pos, PARTICLE_RADIUS, 20, self.color, self.color)
    def __str__(self):
        return "particle with position" + str(self.pos) + " and color" + self.color
 


# create a list of particles
particle_list = [] 
for i in range(1000):
    j = particle([WIDTH/2,HEIGHT/2],random.choice(COLOR_LIST))
    particle_list.append(j)


# draw handler
def draw(canvas):
    for j in particle_list:
        j.move(random.choice(DIRECTION_LIST))
    for j in particle_list:
        j.draw(canvas)
        
# create frame and register draw handler
frame = simplegui.create_frame("particle simulation", WIDTH, HEIGHT)
frame.set_draw_handler(draw)






# start frame
frame.start()










  
    
        
    


0 0
原创粉丝点击