【数学之美】基于加速度计的粒子发射系统
本帖最后由 rzyzzxw 于 2018-10-22 15:52 编辑数学之美第三贴
郞咸蒙老师的粒子发射系统
代码全名是
基于加速度计的读数实时改变发射点位置的粒子系统
哈哈,名字够长够严谨
视频欣赏一下
http://v.youku.com/v_show/id_XMzg3NjU1MTg3Mg==.html?spm=a2h3j.8428770.3416059.1
无论怎么转动
粒子发射源总在下面
源源不断发送出智慧的
小点点
这小点点散发出魔幻的光
吸引我们好好学习天天向上
【代码】
https://github.com/yonghuming/mPython/blob/master/examples/particles/accelParticle.py 加速度计与粒子系统
'''
基于加速度计的读数实时改变发射点位置的粒子系统
感觉粒子系统的读数和板子的方向似乎有点问题
同时使用pixel和DispChar会导致显示巨卡
'''
from mpython import *
from time import sleep_ms
from random import randint
from collections import deque
class Ball():
'''
粒子类
'''
def __init__(self, x, y):
self.x = x
self.y = y
self.vx = randint(-6, 6)
self.vy = randint(-6, 6)
def run(self):
self.update()
self.display()
def update(self):
self.x += self.vx
self.y += self.vy
def isDead(self):
if self.x > 128 or self.x < 0 or self.y > 64 or self.y < 0:
return True
else:
return False
def display(self):
display.pixel(self.x, self.y, 1)
class ParticleSystem():
'''
粒子系统类
'''
def __init__(self, x, y):
self.particles = []
self.x = x
self.y = y
for i in range(200):
self.particles.append(Ball(self.x, self.y))
def run(self):
for p in self.particles:
if p.isDead():
p.x = self.x
p.y = self.y
p.run()
# 初始化粒子系统
ps = ParticleSystem(0, 0)
while True:
sleep_ms(20)
display.fill(0)
x = accelerometer.get_y()
y = accelerometer.get_x()
ps.x = 128-int(x*64+64)
ps.y = int(y*32+32)
ps.run()
# 把加速度计的读数
display.show()
实时运行效果好:victory:
页:
[1]