问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何画烟花

发布网友 发布时间:2022-04-23 01:12

我来回答

4个回答

懂视网 时间:2022-04-06 04:34

用python画烟花的方法:首先创建一个所有粒子同时扩大的二维列表;然后实现粒子范围扩大,以自由落体坠落;接着移除超过最高时长的粒子;最后循环调用保持不停。

用python画烟花的方法:

# -*- coding: utf-8 -*-
# Nola
import tkinter as tk
from PIL import Image, ImageTk
from time import time, sleep
from random import choice, uniform, randint
from math import sin, cos, radians
# 模拟重力
GRAVITY = 0.05
# 颜色选项(随机或者按顺序)
colors = ['red', 'blue', 'yellow', 'white', 'green', 'orange', 'purple', 'seagreen', 'indigo', 'cornflowerblue']
'''
particles 类
粒子在空中随机生成随机,变成一个圈、下坠、消失
属性:
 - id: 粒子的id
 - x, y: 粒子的坐标
 - vx, vy: 在坐标的变化速度
 - total: 总数
 - age: 粒子存在的时长
 - color: 颜色
 - cv: 画布
 - lifespan: 最高存在时长
'''
class Particle:
 def __init__(self, cv, idx, total, explosion_speed, x=0., y=0., vx=0., vy=0., size=2., color='red', lifespan=2,
   **kwargs):
 self.id = idx
 self.x = x
 self.y = y
 self.initial_speed = explosion_speed
 self.vx = vx
 self.vy = vy
 self.total = total
 self.age = 0
 self.color = color
 self.cv = cv
 self.cid = self.cv.create_oval(
  x - size, y - size, x + size,
  y + size, fill=self.color)
 self.lifespan = lifespan
 def update(self, dt):
 self.age += dt
 # 粒子范围扩大
 if self.alive() and self.expand():
  move_x = cos(radians(self.id * 360 / self.total)) * self.initial_speed
  move_y = sin(radians(self.id * 360 / self.total)) * self.initial_speed
  self.cv.move(self.cid, move_x, move_y)
  self.vx = move_x / (float(dt) * 1000)
 # 以自由落体坠落
 elif self.alive():
  move_x = cos(radians(self.id * 360 / self.total))
  # we technically don't need to update x, y because move will do the job
  self.cv.move(self.cid, self.vx + move_x, self.vy + GRAVITY * dt)
  self.vy += GRAVITY * dt
 # 移除超过最高时长的粒子
 elif self.cid is not None:
  cv.delete(self.cid)
  self.cid = None
 # 扩大的时间
 def expand (self):
 return self.age <= 1.2
 # 粒子是否在最高存在时长内
 def alive(self):
 return self.age <= self.lifespan
'''
循环调用保持不停
'''
def simulate(cv):
 t = time()
 explode_points = []
 wait_time = randint(10, 100)
 numb_explode = randint(6, 10)
 # 创建一个所有粒子同时扩大的二维列表
 for point in range(numb_explode):
 objects = []
 x_cordi = randint(50, 550)
 y_cordi = randint(50, 150)
 speed = uniform(0.5, 1.5)
 size = uniform(1, 3)
 color = choice(colors)
 explosion_speed = uniform(0.2, 1)
 total_particles = randint(10, 50)
 for i in range(1, total_particles):
  r = Particle(cv, idx=i, total=total_particles, explosion_speed=explosion_speed, x=x_cordi, y=y_cordi,
    vx=speed, vy=speed, color=color, size=size, lifespan=uniform(0.6, 1.75))
  objects.append(r)
 explode_points.append(objects)
 total_time = .0
 # 1.8s内一直扩大
 while total_time < 1.8:
 sleep(0.01)
 tnew = time()
 t, dt = tnew, tnew - t
 for point in explode_points:
  for item in point:
  item.update(dt)
 cv.update()
 total_time += dt
 # 循环调用
 root.after(wait_time, simulate, cv)
def close(*ignore):
 """退出程序、关闭窗口"""
 global root
 root.quit()
if __name__ == '__main__':
 root = tk.Tk()
 cv = tk.Canvas(root, height=400, width=600)
 # 绘制一个黑色背景
 cv.create_rectangle(0, 0, 600, 400, fill='black')
 # cv = tk.Canvas(root, height=400, width=600)
 # # 选一个好看的背景会让效果更惊艳!
 # image = Image.open("./image.jpg")
 # photo = ImageTk.PhotoImage(image)
 #
 # cv.create_image(0, 0, image=photo, anchor='nw')
 cv.pack()
 root.protocol("WM_DELETE_WINDOW", close)
 root.after(100, simulate, cv)
 root.mainloop()

实现效果图:

2cb55f52394b13a1713c05301a7e1a1.png

相关免费学习推荐:python视频教程

热心网友 时间:2022-04-06 01:42

  烟花在我们的心中是一种非常美好的事物,每到各种大型的节日很多地方都有烟花表演。大家知道吗?全球各个国家都会在跨年的那一天燃放烟花来庆祝,烟花虽然是一种转瞬即逝的东西,但是非常的美丽,可以很好的烘托节日的喜庆气氛。今天中华板报网小编为大家带来烟花怎么画简单又好看,烟花简笔画彩色,我们一起来画天空中美丽的烟花吧!



  1、首先我们先在纸张的中间位置画上一个不规则的多边形,这是烟花炸开的那个中心点,一般我们见到的烟花都是炸开的,往两边散开。



  2、接着在中心点的旁边开始画出烟花坠落的痕迹,因为烟花是一种转瞬即逝的,我们看到的是它在天空留下的光影,我们把烟花炸开的形状画出来。



  3、继续画出完整的烟花的形状,在大的痕迹周围还有这很多小的星星点点的小光亮,这才是我们看到的美好的烟花嘛!其实每次看烟花的时候还是很浪漫的,所以很多电视剧中都有男主和女主一起看烟花的场景。



  4、最后我们就来给烟花涂色啦,烟花就是要五颜六色才好看,我们给每一个部分都涂上不同的颜色,周围的星星点点涂上金*,这样漂亮的烟花简笔画就完成啦!

热心网友 时间:2022-04-06 03:00

画烟花的话,我们在描绘的时候尽可能的去勾勒,用鲜艳的色彩去将烟花的线条勾勒出来,不需要太过于细节,重在相似,也就是传统化中的神似就可以了。

热心网友 时间:2022-04-06 04:34

付费内容限时免费查看回答第一步:画出烟花的一部分火光。

第二步:接着继续画出烟花的火光。

第三步:继续补充一些火光,烟花的雏形出来了。

第四步:画出烟花的完整线条。

第五步:涂上颜色,烟花简笔画就完成了!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 治疗便秘有什么妙方? vivox9I换一个屏幕多少钱 烟花是怎么画的 简单 缓解便秘的方法 你好美女在吗?请问vivox9i换内外屏幕多少钱?原装 有什么方法可以有效解决长期便秘? 怎么画烟花? vivox9i换屏的价格? 解决便秘的小妙招有哪些? 新年烟花怎么画? vivo X9i能换成x9的屏幕吗? 有什么治疗便秘的小妙招吗? 烟花怎么画画 如何辨别vivox9i换屏幕? 有什么治便秘的小妙招吗? 如何画简单的烟花 解决便秘的小妙招有什么? 买了一年的vivox9i屏幕碎了,换一下要580,大家说值得换吗,还是换个手机 又简单又漂亮的烟花怎么画呢? 经常便秘很难受,有哪些改善便秘的小妙招? vivox9i外屏坏了,要修要多少钱? 治疗便秘有妙招吗 我的烟火时刻怎么画 vivox9i能换成x9的屏幕吗?谢谢 缓解便秘的小妙招都有哪些? 粉笔烟花怎么画 vivox9i把屏幕和后盖都换成vivox9的,可以么 有什么小妙招治疗便秘? 中国女装品牌排行榜? viviX9i外屏碎了换要多少钱啊 治疗便秘的小妙招? 请问,国产女装十大品牌有哪些? 醒图怎么画烟花 如何缓解便秘? 烟花的简易画法 急求治便秘妙方 简单又漂亮的烟花怎么画? 有没有解决便秘的小妙招,能真正改善便秘的? 烟花怎么画 女装品牌排行前十名分别是哪些品牌?