当前位置: 首页 > news >正文

基于Python实现一个浪漫烟花秀

为了实现一个类似烟花秀的效果,我们可以通过复杂的粒子系统来模拟烟花的升起、绽放和下落效果。以下是一个示例,旨在创建更为动态和逼真的烟花秀效果。

示例代码

这个代码示例将使用 matplotlibnumpy,并实现更丰富的视觉效果:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animationclass Particle:def __init__(self, x, y, vx, vy, color):self.x = xself.y = yself.vx = vxself.vy = vyself.color = colorself.life = np.random.randint(50, 100)  # 生命值,控制粒子的存活时间def update(self):self.x += self.vxself.y += self.vyself.vy -= 0.05  # 重力影响self.life -= 1  # 每次更新生命值减少def is_alive(self):return self.life > 0class Firework:def __init__(self, x, y):self.x = xself.y = yself.particles = []self.exploded = Falsedef explode(self):if not self.exploded:num_particles = np.random.randint(100, 200)angles = np.linspace(0, 2 * np.pi, num_particles)speeds = np.random.uniform(1, 4, num_particles)colors = plt.cm.hsv(np.random.rand(num_particles))  # 使用HSV颜色for angle, speed, color in zip(angles, speeds, colors):vx = speed * np.cos(angle)vy = speed * np.sin(angle)self.particles.append(Particle(self.x, self.y, vx, vy, color))self.exploded = Truedef update(self):if self.exploded:for particle in self.particles:particle.update()def get_particles(self):return [p for p in self.particles if p.is_alive()]# 初始化画布
fig, ax = plt.subplots()
ax.set_xlim(0, 10)
ax.set_ylim(0, 10)
ax.set_facecolor('black')fireworks = []# 生成烟花
def generate_fireworks(num):for _ in range(num):x = np.random.uniform(1, 9)y = 0  # 从底部开始firework = Firework(x, y)fireworks.append(firework)generate_fireworks(3)# 动画更新函数
def update(frame):ax.clear()ax.set_xlim(0, 10)ax.set_ylim(0, 10)ax.set_facecolor('black')# 处理烟花升起for firework in fireworks:if firework.y < 8:  # 设置升起的高度firework.y += 0.1else:firework.explode()  # 当升至最高点,爆炸firework.update()  # 更新粒子# 绘制存活的粒子particles = firework.get_particles()for particle in particles:ax.scatter(particle.x, particle.y, color=particle.color, s=10)# 创建动画
ani = animation.FuncAnimation(fig, update, frames=100, interval=50)
plt.show()

代码说明

  1. 粒子类

    • 每个粒子有随机的生命值、速度和颜色。
    • 更新方法考虑了重力的影响,使粒子逐渐下落。
  2. 烟花类

    • 生成大量粒子,每个粒子都有独特的颜色和速度,使效果更加多样化。
    • 当烟花达到一定高度后,会进行爆炸。
  3. 初始化和动画更新

    • 动画中,每个烟花从底部升起,并在达到最高点时爆炸,粒子下落,呈现出烟花绽放的效果。

运行代码

将以上代码复制到你的 Python 环境中运行,即可看到一个更为动态和逼真的烟花效果。你可以根据需要进一步调整粒子的数量、速度和颜色映射,以实现更符合您预期的效果。

相关文章:

基于Python实现一个浪漫烟花秀

为了实现一个类似烟花秀的效果&#xff0c;我们可以通过复杂的粒子系统来模拟烟花的升起、绽放和下落效果。以下是一个示例&#xff0c;旨在创建更为动态和逼真的烟花秀效果。 示例代码 这个代码示例将使用 matplotlib 和 numpy&#xff0c;并实现更丰富的视觉效果&#xff1…...

电气自动化入门03:安全用电

视频链接&#xff1a;2.1 电工知识&#xff1a;触电原因与防触电措施_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PJ41117PW/?p4&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.电流对人体的危害 电击&#xff1a;电流通过人体。 电伤&#xff1a;电流热效应…...

【深度学习】(2)--PyTorch框架认识

文章目录 PyTorch框架认识1. Tensor张量定义与特性创建方式 2. 下载数据集下载测试展现下载内容 3. 创建DataLoader&#xff08;数据加载器&#xff09;4. 选择处理器5. 神经网络模型构建模型 6. 训练数据训练集数据测试集数据 7. 提高模型学习率 总结 PyTorch框架认识 PyTorc…...

前端面试记录

js 1. 函数式编程 将计算过程视为一系列的函数调用,函数的输出完全由输入决定&#xff0c;不依赖于或改变程序的状态,使得函数式编程的代码更加可预测和易于理解。 函数式编程的三个核心概念&#xff1a;纯函数、高阶函数和柯里化。 高阶函数&#xff1a;函数可以作为参数传…...

裁员了,很严重,大家做好准备吧!

最近刷到这样一个故事&#xff1a; 一个网友在大厂当牛马接近10年&#xff0c;部门优秀员工&#xff0c;业绩一直很稳&#xff0c;没想到&#xff0c;今年公司引进AI降本增效&#xff0c;开始大幅裁员&#xff0c;有些部门一夜之间被连锅端&#xff01; 上个月果然轮到他了&a…...

uniapp组件uni-datetime-picker选择年月后在ios上日期不显示

uniapp组件uni-datetime-picker选择年月后在ios上日期不显示 操作步骤&#xff1a; ios 选择年月 预期结果&#xff1a; 日期变为选择年月的日期 实际结果&#xff1a; 日期不显示 bug描述&#xff1a; uni-datetime-picker 2.2.22 ios点击年月选择后日期不显示 解决方案 …...

01_快速入门

读取数据 import pandas as pd# df pd.read_excel(https://xxxx/xxx//xx.xslx) # 读取网络数据 # df pd.read_excel(rd:\data\xx.xslx) # 读取本地文件 # 如果是csv文件&#xff0c;用read_csv()函数 df pd.read_csv(seaborn/iris.csv)查看数据 df.head() # 前5条记录 d…...

数据结构之分文件编译学生管理

list.h #ifndef LIST_H_ #define LIST_H_ #define MAX 30 typedef struct {int id;//学号char name[20];//姓名char major[20];//专业int age;//年龄 }student,*Pstudent;typedef struct {student data[MAX];//储存学生信息的数组int len;//统计学生个数 }list,*Plist;Plist c…...

TypeScript入门 (二)控制语句

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的TypeScript学习总结文档。本文主要讲解TypeScript中控制语句的部分&#xff1b;希望通过我的知识点总结&#xff0c;能够帮助你更好地…...

MVP 最简可行产品

MVP&#xff08;最小可行产品&#xff09;是一种产品开发策略&#xff0c;其主要目的是用最少的时间和资源&#xff0c;开发一个包含最基本必要功能的产品。这样做的目的是能够以最小的成本进入市场&#xff0c;获取用户反馈&#xff0c;再根据反馈逐步优化产品。 MVP是什么 …...

数仓工具:datax

datax可以理解为sqoop的优化版&#xff0c; 速度比sqoop快 因为sqoop底层是map任务&#xff0c;而datax底层是基于内存 DataX 是一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定…...

CSS传统布局方法(补充)——WEB开发系列37

开发技术不断演进&#xff0c;布局方式也经历了多个阶段的变革。从最初的基于表格布局到 CSS 的浮动布局&#xff0c;再到今天的弹性盒&#xff08;Flexbox&#xff09;与 CSS Grid 网格布局&#xff0c;每一种布局方式都有其独特的背景和解决特定问题的优势。 一、CSS Grid 出…...

【系统架构设计师】软件架构的风格(经典习题)

更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【第1题】【第2题】【第3~4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15~16题】【第17题】【第18~19题】【第20~21题】【第22题】【第23题】【第24~…...

网页打开时,下载的文件fetcht类型?有什么作用?

‌fetch API‌是一种用于向服务器发送请求并获取响应的现代Web API。它支持获取各种类型的数据&#xff0c;包括文本、JSON、图像和文件等。fetch API的主要优势之一是支持流式传输和取消请求&#xff0c;这使得处理大型数据集和长时间运行的操作变得更加简单和可靠。此外&…...

作为HR,如何考察候选人的专业知识与技能

这是严肃的话题&#xff0c;如何考察候选人的专业知识和技能。HR招聘是一个让我们既爱又恨的过程。爱的是&#xff0c;我们有机会遇到各种各样的人才&#xff1b;恨的是&#xff0c;要从茫茫人海中找到那个“对的人”简直比找一根针在干草堆里还难。 本系列的文章&#xff0c;…...

阻止冒泡事件

每一div都有一个切换事件 div里包括【复制】事件&#xff0c; 点击【复制按钮】&#xff0c;会触发【切换事件】 因为冒泡 在 Vue 3 中&#xff0c;阻止 click 事件冒泡可以使用以下常规方法&#xff1a; 1 事件修饰符&#xff1a;Vue 3 中提供了多种事件修饰符&#xff0c…...

聊聊Netty对于内存方面的优化

写在文章开头 Netty通过巧妙的内存使用技巧尽可能节约内存空间,进而减少java中Full gc的STW的时间,由此间接的提升了程序的性能,本文也将直接从源码的角度分析一下Netty对于内存方面的使用技巧,希望对你有所启发。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java…...

2024年轻人驯化AI指南

或许Python编程是答案 我为您精心准备了一份全面的Python学习大礼包&#xff0c;完全免费分享给每一位渴望成长、希望突破自我现状却略感迷茫的朋友。无论您是编程新手还是希望深化技能的开发者&#xff0c;都欢迎加入我们的学习之旅&#xff0c;共同交流进步&#xff01; &…...

算法:双指针题目练习

文章目录 算法:双指针移动零复写零快乐数盛最多水的容器有效三角形的个数查找总价格为目标值的两个商品三数之和四数之和 总结 算法:双指针 移动零 定义两个指针,slow和fast.用这两个指针把整个数组分成三块. [0,slow]为非零元素,[slow1,fast-1]为0元素,[fast,num.length]为未…...

傅里叶变换的基本性质和有关定理

一、傅里叶变换的基本性质 1.1 线性性质 若 则 其中:a,b是常数 函数线性组合的傅里叶变换等于歌函数傅里叶变换的相应组合。 1.2 对称性 若 则 关于傅里叶变换的对称性还有 虚、实、奇、偶函数的傅里叶变换性质: 1.3 迭次傅里叶变换 对f(x,y)连续两次做二维傅里叶变换…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...