admin管理员组

文章数量:1794759

第8章 随风飘动的粒子 (《Python趣味创意编程》教学视频)

第8章 随风飘动的粒子 (《Python趣味创意编程》教学视频)

(图书介绍:童晶:《Python趣味创意编程》新书预告)

本章我们将实现随风飘动的粒子,如图所示。首先绘制逐渐消失的轨迹,实现随机运动的圆点;然后学习列表的概念,利用列表实现多个运动粒子;最后实现随机速度场,并为粒子添加彩色效果。

8 随风飘动的粒子

视频教程:

一些图片效果:

 

 

 

最终代码:

particles = [] # 存储所有粒子的全局变量,初始为空列表 def setup(): size(1280, 800) # 设定画布大小 noStroke() # 不绘制线条 for i in range(2000): # 生成2000个粒子 x = random(0,width) # 设置圆心x坐标 y = random(0,height) # 设置圆心y坐标 v_mag = random(1.0,2.0) # 速度绝对值大小 v_angle = random(-2*PI,2*PI) # 速度的方向 c = color(random(100,255),random(100,255),random(100,255)) particle = [x,y,v_mag,v_angle,c] # 当前粒子 particles.append(particle) # 把粒子添加到particles中 def draw(): fill(0, 10) # 设置填充色为黑色,透明度为10 rect(0, 0, width, height) # 绘制一个半透明的大矩形 fill(255) # 设置填充色为白色,用于下面绘制粒子 for particle in particles: noiseValue = noise(0.001*particle[0],10+0.001*particle[1] \\ ,frameCount*0.005) particle[3] = map(noiseValue,0,1,-2*PI,PI*2) #速度方向随机扰动 vx = particle[2]*cos(particle[3]) # x方向速度 vy = particle[2]*sin(particle[3]) # y方向速度 particle[0] = particle[0] + vx # x坐标变化 particle[1] = particle[1] + vy # y坐标变化 # 粒子碰到边界后随机出现 if particle[0]<0 or particle[0]>width \\ or particle[1]<0 or particle[1]>height: particle[0] = random(0,width) # 设置圆心x坐标 particle[1] = random(0,height) # 设置圆心y坐标 r = map(sin(frameCount/75.0),-1,1,50,255) # 随机红色分量 g = map(sin(frameCount/101.0),-1,1,75,255) # 随机绿色分量 b = map(sin(frameCount/151.0),-1,1,100,255) # 随机蓝色分量 particle[4] = color(r,g,b) # 设置随机颜色 fill(particle[4]) # 设置填充颜色 circle(particle[0], particle[1], 2) # 画一个直径为2的圆点

这一章主要讲解了列表的语法知识,实现了随风飘动的粒子。应用列表,我们可以记录、处理大量的数据;应用随机和颜色,能够带来更加丰富多变的效果。读者也可以尝试实现更加有趣的交互、可视化效果。

 

本文标签: 创意随风粒子趣味视频