李峋同款心跳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代码相关推荐

  1. 李峋同款爱心Python代码版来了

  2. 爱心代码李峋同款爱心 python html

    目录 前言 一.python 1.python 第一个 2.python第二个 二.HTML 1.第一个 2.第二个html 3.第三个html 3.第四个html 总结 前言 最近那个电视剧很火,就 ...

  3. 李峋同款 爱心动态代码 步骤教程,可自定义修改自己喜爱照片背景(附代码)

    1.电脑桌面创建一个后缀名为.txt的记事本文件,把写好的代码复制进去 2.将.txt文本文件另存为 .html 文件并保存,桌面就会出现刚保存的文件(注意是后缀为.html的文件) 3.如果想要修改 ...

  4. 李峋同款爱心python实现

    爱心运行结果截图: import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH = 840 # ...

  5. 李峋同款会动的爱心Python代码版

    最近看到不少关于李峋同款爱心的视频.文章,今天我们也分享一下李峋同款爱心 Python 代码版.要问李峋是谁?我也不太清楚,大家可自行百度,这个是我百度的结果,仅供参考. 简单来说李峋同款爱心就是一个 ...

  6. 李峋同款爱心代码(附源码)

    李峋同款浪漫爱心代码(快拿去给爸爸妈妈,给男(女)朋友看!!!) 基于新建文件基础上.txt文档 <html> <head><meta charset="utf ...

  7. 214 情人节来袭,电视剧 《点燃我温暖你》李峋同款 Python爱心表白代码,赶紧拿去用吧

    大家好,我是徐公,六年大厂程序员经验,今天为大家带来的是动态心形代码,电视剧 <点燃我温暖你>同款的,大家赶紧看看,拿去向你心仪的对象表白吧,下面说一下灵感来源. 灵感来源 今天,早上起来 ...

  8. 李峋同款爱心代码(附源码,前端代码,python代码)

    Hello 大家好 如何浪漫的表白,作为程序员出身的小编,今天就带你实现热播剧<点燃我,温暖你>中超火的李峋同款爱心代码!前面是教程,怕麻烦的朋友可以直接划到文末,下载现成的,下载完成后打 ...

  9. Python版李峋同款爱心代码来了!!

    李峋是谁?我也不太清楚! 但是最近看到不少关于李峋同款爱心的视频和文章 今天也来分享一下李峋同款爱心的相关代码,如下! import random from math import sin, cos, ...

最新文章

  1. 解决Python中PyCharm导入模块时,模块名下出现红色波浪线的问题
  2. js 多个input值拼接json字符串
  3. ps怎么对比原图快捷键_PS图片调色常用快捷键,专为新手整理
  4. Java实现百度贴吧自动签到器
  5. 题解 P2184 【贪婪大陆】
  6. Leetcode 809. Expressive Words
  7. java入门拼图小游戏_【java】JavaFX从零开始实现拼图小游戏
  8. 通知器(Notifier)
  9. Svn修改自己已经提交的备注
  10. Node.js—Express、Express 路由 、Express 中间件、使用 Express 写接口
  11. 大局已定,应届生三面京东成功拿下20K的Offer。
  12. 信号signal ---带数据的信号的发送及安装
  13. 多视图几何学(Multiple View Geometry)读书笔记目录
  14. Autocad毕业设计CAD机械练习图开始发放啦!
  15. 台式计算机更改bios密码,台式机或笔记本忘记Bios密码解决方法
  16. 视频编辑器-MovieMator 简洁使用-在时间线上拆分,修剪,连接剪辑
  17. 毕业设计-基于机器学习的短期负荷预测算法
  18. VS Code运行C++程序的配置过程
  19. 解决win10环境下安装ArcGIS提示需要Microsoft.NET Framework 3.5sp1或等效环境问题
  20. 嵌入式Linux设备驱动程序开发指南9(平台设备驱动)——读书笔记

热门文章

  1. 【软件测试】全网火爆,实战Web项目前后台的bug定位(超详细)
  2. 一大拨商家晒出了天猫618战绩
  3. 字体图标库icomoon和iconfont使用方法
  4. mysql日期格式化大全
  5. 0基础学RS(十九)以太网通道链路聚合
  6. 价值十万代码之三-获取全部历史数据
  7. Fine-Tuning can Distort Pretrained Features and Underperform Out-of-Distribution
  8. 物理磁盘监控工具--scrutiny
  9. jquery html() 乱码,jquery中文乱码怎么解决?
  10. python fileinput_Python fileinput模块使用介绍