2018-10-19 11:28:00 [显示全部楼层]
4539浏览
查看: 4539|回复: 1

【数学之美】基于加速度计的粒子发射系统

[复制链接]
本帖最后由 rzyzzxw 于 2018-10-22 15:52 编辑

数学之美第三贴

郞咸蒙老师的粒子发射系统

代码全名是

基于加速度计的读数实时改变发射点位置的粒子系统

哈哈,名字够长够严谨

视频欣赏一下


无论怎么转动

粒子发射源总在下面

源源不断发送出智慧的

小点点

这小点点散发出魔幻的光

吸引我们好好学习天天向上

【代码】




[mw_shl_code=python,true]'''
基于加速度计的读数实时改变发射点位置的粒子系统
感觉粒子系统的读数和板子的方向似乎有点问题
同时使用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()[/mw_shl_code]

安卓机器人  中级技神

发表于 2018-10-22 10:18:59

实时运行效果好:victory:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail