李峋同款心跳Python代码
李峋同款心跳Python代码【按头安利《点燃我温暖你》】
import random
from math import sin,cos,pi,log
from tkinter import *
CANVAS_WIDTH = 640
CANVAS_HEIGHT = 640
CANVAS_CENTER_X = CANVAS_WIDTH / 2
CANVAS_CENTER_Y = CANVAS_HEIGHT / 2
IMAGE_ENLARGE = 11
HEART_COLOR = "#Fd798f"def heart_function(t,shrink_ratio:float = IMAGE_ENLARGE):#爱心的宽度x = 16 * (sin(t) ** 3)#爱心的长度(高度,心头)y = -(15 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(3 * t))#放大x *= shrink_ratio #收缩率y *= shrink_ratio#移到画布中央x += CANVAS_CENTER_Xy += CANVAS_CENTER_Yreturn int(x), int(y)
#散射_侧面
def scatter_inside(x,y,beta=0.15):ratio_x = -beta * log(random.random())ratio_y = -beta * log(random.random())dx = ratio_x * (x - CANVAS_CENTER_X)dy = ratio_y * (y - CANVAS_CENTER_Y)return x - dx, y - dy#收缩
def shrink(x, y, ratio):force = -1 / (((x - CANVAS_CENTER_X) ** 2 +(y - CANVAS_CENTER_Y) ** 2) ** 0.6)dx = ratio * force * (x - CANVAS_CENTER_X)dy = ratio * force * (y - CANVAS_CENTER_Y)return x - dx, y - dy#曲线
def curve(p):return 2 * (2 * sin(4 * p)) / (2 * pi)class Heart:def __init__(self, generate_frame=20):self._points = set() #原始爱心坐标集合self._edge_diffusion_points = set() #边缘扩散效果点self._center_diffusion_points = set() #中心扩散效果点self.all_points = {} #每帧动态点坐标self.build(2000)#随机光晕1000self.random_halo = 1000self.generate_frame = generate_framefor frame in range(generate_frame):self.calc(frame)def build(self, number):for _ in range(number):t = random.uniform(0, 2 * pi) #0.2x, y = heart_function(t)self._points.add((x,y))#爱心内扩散for _x, _y, in list(self._points):for _ in range(3):x, y = scatter_inside(_x, _y, 0.3) #0.2self._edge_diffusion_points.add((x,y))#爱心内再次扩散point_list = list(self._points)for _ in range(4000):x, y = random.choice(point_list)x, y = scatter_inside(x, y, 0.2) #0.2self._center_diffusion_points.add((x,y))@staticmethod#计算位置def calc_position(x, y, ratio):force = 1 / (((x - CANVAS_CENTER_X) ** 2 +(y - CANVAS_CENTER_Y) ** 2) ** 0.520)dx = ratio * force * (x - CANVAS_CENTER_X) + random.randint(-2, 2)dy = ratio * force * (y - CANVAS_CENTER_Y) + random.randint(-2, 2)return x - dx, y - dydef calc(self, generate_frame):ratio = 15 * curve(generate_frame / 15 * pi)halo_radius = int(4 + 6 * (1 + curve(generate_frame / 15 * pi)))halo_number = int(3000 + 4000 * abs(curve(generate_frame / 15 * pi) ** 2))all_points = []#光环heart_halo_point = set()for _ in range(halo_number):t = random.uniform(0, 2 * pi)x, y = heart_function(t, shrink_ratio=11.5)x, y = shrink(x, y, halo_radius)if(x, y) not in heart_halo_point:heart_halo_point.add((x, y))x += random.randint(-16, 16)y += random.randint(-16, 16)#点的大小size = random.choice((2, 2, 1)) # 1 2 2all_points.append((x, y, size))#轮廓for x, y in self._points:x, y = self.calc_position(x, y, ratio)size = random.randint(1, 2)all_points.append((x, y, size))#内容for x, y in self._edge_diffusion_points:x, y = self.calc_position(x, y, ratio)size = random.randint(1, 2)all_points.append((x, y, size))self.all_points[generate_frame] = all_pointsfor x, y in self._center_diffusion_points:x, y = self.calc_position(x, y, ratio)size = random.randint(1, 2)all_points.append((x, y, size))self.all_points[generate_frame] = all_pointsdef render(self, render_canvas, render_frame):for x, y, size in self.all_points[render_frame % self.generate_frame]:render_canvas.create_rectangle(x, y, x + size, y + size, width = 0, fill = HEART_COLOR)def draw(main: Tk, render_canvas: Canvas, render_Heart: Heart, render_frame = 0):render_canvas.delete('all')render_Heart.render(render_canvas, render_frame)main.after(160, draw, main, render_canvas, render_Heart, render_frame + 1)if __name__ == '__main__':root = Tk()root.title("~怦怦~是心动呀!") #展示框的标题canvas = Canvas(root, bg='black', height=CANVAS_HEIGHT, width=CANVAS_WIDTH)canvas.pack()heart = Heart()draw(root, canvas, heart)root.mainloop()
李峋同款心跳Python代码相关推荐
- 李峋同款爱心Python代码版来了
- 爱心代码李峋同款爱心 python html
目录 前言 一.python 1.python 第一个 2.python第二个 二.HTML 1.第一个 2.第二个html 3.第三个html 3.第四个html 总结 前言 最近那个电视剧很火,就 ...
- 李峋同款 爱心动态代码 步骤教程,可自定义修改自己喜爱照片背景(附代码)
1.电脑桌面创建一个后缀名为.txt的记事本文件,把写好的代码复制进去 2.将.txt文本文件另存为 .html 文件并保存,桌面就会出现刚保存的文件(注意是后缀为.html的文件) 3.如果想要修改 ...
- 李峋同款爱心python实现
爱心运行结果截图: import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH = 840 # ...
- 李峋同款会动的爱心Python代码版
最近看到不少关于李峋同款爱心的视频.文章,今天我们也分享一下李峋同款爱心 Python 代码版.要问李峋是谁?我也不太清楚,大家可自行百度,这个是我百度的结果,仅供参考. 简单来说李峋同款爱心就是一个 ...
- 李峋同款爱心代码(附源码)
李峋同款浪漫爱心代码(快拿去给爸爸妈妈,给男(女)朋友看!!!) 基于新建文件基础上.txt文档 <html> <head><meta charset="utf ...
- 214 情人节来袭,电视剧 《点燃我温暖你》李峋同款 Python爱心表白代码,赶紧拿去用吧
大家好,我是徐公,六年大厂程序员经验,今天为大家带来的是动态心形代码,电视剧 <点燃我温暖你>同款的,大家赶紧看看,拿去向你心仪的对象表白吧,下面说一下灵感来源. 灵感来源 今天,早上起来 ...
- 李峋同款爱心代码(附源码,前端代码,python代码)
Hello 大家好 如何浪漫的表白,作为程序员出身的小编,今天就带你实现热播剧<点燃我,温暖你>中超火的李峋同款爱心代码!前面是教程,怕麻烦的朋友可以直接划到文末,下载现成的,下载完成后打 ...
- Python版李峋同款爱心代码来了!!
李峋是谁?我也不太清楚! 但是最近看到不少关于李峋同款爱心的视频和文章 今天也来分享一下李峋同款爱心的相关代码,如下! import random from math import sin, cos, ...
最新文章
- 解决Python中PyCharm导入模块时,模块名下出现红色波浪线的问题
- js 多个input值拼接json字符串
- ps怎么对比原图快捷键_PS图片调色常用快捷键,专为新手整理
- Java实现百度贴吧自动签到器
- 题解 P2184 【贪婪大陆】
- Leetcode 809. Expressive Words
- java入门拼图小游戏_【java】JavaFX从零开始实现拼图小游戏
- 通知器(Notifier)
- Svn修改自己已经提交的备注
- Node.js—Express、Express 路由 、Express 中间件、使用 Express 写接口
- 大局已定,应届生三面京东成功拿下20K的Offer。
- 信号signal ---带数据的信号的发送及安装
- 多视图几何学(Multiple View Geometry)读书笔记目录
- Autocad毕业设计CAD机械练习图开始发放啦!
- 台式计算机更改bios密码,台式机或笔记本忘记Bios密码解决方法
- 视频编辑器-MovieMator 简洁使用-在时间线上拆分,修剪,连接剪辑
- 毕业设计-基于机器学习的短期负荷预测算法
- VS Code运行C++程序的配置过程
- 解决win10环境下安装ArcGIS提示需要Microsoft.NET Framework 3.5sp1或等效环境问题
- 嵌入式Linux设备驱动程序开发指南9(平台设备驱动)——读书笔记
热门文章
- 【软件测试】全网火爆,实战Web项目前后台的bug定位(超详细)
- 一大拨商家晒出了天猫618战绩
- 字体图标库icomoon和iconfont使用方法
- mysql日期格式化大全
- 0基础学RS(十九)以太网通道链路聚合
- 价值十万代码之三-获取全部历史数据
- Fine-Tuning can Distort Pretrained Features and Underperform Out-of-Distribution
- 物理磁盘监控工具--scrutiny
- jquery html() 乱码,jquery中文乱码怎么解决?
- python fileinput_Python fileinput模块使用介绍