位置: IT常识 - 正文

Python跳动的爱心(python编程爱心形状)

编辑:rootadmin
Python跳动的爱心

推荐整理分享Python跳动的爱心(python编程爱心形状),希望有所帮助,仅作参考,欢迎阅读内容。

Python跳动的爱心(python编程爱心形状)

文章相关热门搜索词:python爱心函数,python怎么弄个爱心,python动态心形代码简单,python动态心形代码简单,用python画爱心动图,python跳动的爱心代码,用python画爱心动图,python动态心形代码,内容如对您有帮助,希望把文章链接给更多的朋友!

目录

前言 

表白界面 

爱心类 

其他函数 


前言 

跳动的爱心,这又是谁的青春吖,源码在文末公众号自取哈

表白界面 

   

def OK(): #同意按钮 root.destroy() love() #同意后显示漂浮爱心def NO(): #拒绝按钮,拒绝不会退出,必须同意才可以退出哦~ tk.messagebox.showwarning('❤','再给你一次机会!')def closeWindow(): tk.messagebox.showwarning('❤','逃避是没有用的哦')爱心类 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) self.random_halo = 1000 self.generate_frame = generate_frame for frame in range(generate_frame): self.calc(frame) def build(self, number): for _ in range(number): t = random.uniform(0, 2 * pi) x, 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.05) self._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.17) self._center_diffusion_points.add((x, y)) @staticmethod def calc_position(x, y, ratio): force = 1 / (((x - heartx) ** 2 + (y - hearty) ** 2) ** 0.520) # 魔法参数 dx = ratio * force * (x - heartx) + random.randint(-1, 1) dy = ratio * force * (y - hearty) + random.randint(-1, 1) return x - dx, y - dy def calc(self, generate_frame): ratio = 10 * curve(generate_frame / 10 * pi) # 圆滑的周期的缩放比例 halo_radius = int(4 + 6 * (1 + curve(generate_frame / 10 * pi))) halo_number = int(3000 + 4000 * abs(curve(generate_frame / 10 * 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.6) x, y = shrink(x, y, halo_radius) if (x, y) not in heart_halo_point: heart_halo_point.add((x, y)) x += random.randint(-14, 14) y += random.randint(-14, 14) size = random.choice((1, 2, 2)) all_points.append((x, y, size)) for x, y in self._points: x, y = self.calc_position(x, y, ratio) size = random.randint(1, 3) 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)) for 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_points def 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=heartcolor)其他函数 def heart_function(t, shrink_ratio: float = side): x = 16 * (sin(t) ** 3) y = -(13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t)) x *= shrink_ratio y *= shrink_ratio x += heartx y += hearty return 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 - heartx) dy = ratio_y * (y - hearty) return x - dx, y - dydef shrink(x, y, ratio): force = -1 / (((x - heartx) ** 2 + (y - hearty) ** 2) ** 0.6) # 这个参数... dx = ratio * force * (x - heartx) dy = ratio * force * (y - hearty) return x - dx, y - dydef curve(p): return 2 * (2 * sin(4 * p)) / (2 * pi)def draw(main: tk.Tk, render_canvas: tk.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)
本文链接地址:https://www.jiuchutong.com/zhishi/297797.html 转载请保留说明!

上一篇:Vue中实现清空数组和清空el-table(vue清空input file的值)

下一篇:我的第一次edusrc漏洞挖掘 (三连挖)(我的第一次作文400字左右)

  • qq怎么转发别人的动态到自己空间(qq怎么转发别人的说说)

    qq怎么转发别人的动态到自己空间(qq怎么转发别人的说说)

  • ios15怎么使用蜂窝数据的sim卡(iphone蜂窝怎么用)

    ios15怎么使用蜂窝数据的sim卡(iphone蜂窝怎么用)

  • 手机的OTG功能在哪里(手机的OTG功能在哪里oppo)

    手机的OTG功能在哪里(手机的OTG功能在哪里oppo)

  • 手机通知栏不显示信息怎么设置(手机通知栏看不见)

    手机通知栏不显示信息怎么设置(手机通知栏看不见)

  • 苹果x换屏原彩写入(苹果x换屏原彩显示没有了)

    苹果x换屏原彩写入(苹果x换屏原彩显示没有了)

  • 快手公众号怎么充值?(快手公众号怎么充值)

    快手公众号怎么充值?(快手公众号怎么充值)

  • soul拉黑后发消息对方能收到吗(soul拉黑后发消息对方,对方知道吗)

    soul拉黑后发消息对方能收到吗(soul拉黑后发消息对方,对方知道吗)

  • 苹果卸载软件残留怎么清理(苹果卸载软件残留的数据怎么删除)

    苹果卸载软件残留怎么清理(苹果卸载软件残留的数据怎么删除)

  • iphone11pro max死机怎么重启(iphone11pro max死机无法重启)

    iphone11pro max死机怎么重启(iphone11pro max死机无法重启)

  • 手机玩着玩着突然锁屏(手机玩着玩着突然黑屏是怎么回事)

    手机玩着玩着突然锁屏(手机玩着玩着突然黑屏是怎么回事)

  • 苹果手机有哪些款式型号(苹果手机有哪些实用功能)

    苹果手机有哪些款式型号(苹果手机有哪些实用功能)

  • 千兆网线和万兆网线有什么区别(千兆网线和万兆网线对网速有影响吗)

    千兆网线和万兆网线有什么区别(千兆网线和万兆网线对网速有影响吗)

  • 抖音注销后视频还在吗(抖音注销后视频重发有影响吗)

    抖音注销后视频还在吗(抖音注销后视频重发有影响吗)

  • 10000kbps网速是多少(10000 kb)

    10000kbps网速是多少(10000 kb)

  • 小米watch能不能上微信(小米watch能不能装百度地图)

    小米watch能不能上微信(小米watch能不能装百度地图)

  • 电子邮件的传输协议(电子邮件的传输遵循的协议是( ))

    电子邮件的传输协议(电子邮件的传输遵循的协议是( ))

  • 开省电模式充电会慢吗(开省电模式充电快还是正常充电快)

    开省电模式充电会慢吗(开省电模式充电快还是正常充电快)

  • 华为手表gt2支持微信吗(华为手表gt2支持反向充电吗)

    华为手表gt2支持微信吗(华为手表gt2支持反向充电吗)

  • word2010怎么生成目录(word2010怎么生成三级目录)

    word2010怎么生成目录(word2010怎么生成三级目录)

  • 天猫怎么预售(天猫怎么开通预售权限)

    天猫怎么预售(天猫怎么开通预售权限)

  • vivo怎样设置个人铃声(怎么设置vivo)

    vivo怎样设置个人铃声(怎么设置vivo)

  • 如何修改网页图片尺寸(如何修改网页图标)

    如何修改网页图片尺寸(如何修改网页图标)

  • 什么是动态字符(什么是动态字符串)

    什么是动态字符(什么是动态字符串)

  • PS设计名片的尺寸多少合适(ps设计名片的尺寸)

    PS设计名片的尺寸多少合适(ps设计名片的尺寸)

  • realmex多重(realme x手机重量)

    realmex多重(realme x手机重量)

  • 京东退货如何取消(京东退货如何取消个人信息)

    京东退货如何取消(京东退货如何取消个人信息)

  • rsh命令  远端登入的shell(ssh远程登录执行命令)

    rsh命令 远端登入的shell(ssh远程登录执行命令)

  • 公司利润税怎么交
  • 小规模收到专票怎么处理
  • 财税2019 21号第二条
  • 税务师入会与不入会冲突
  • 所得税费用税前扣除项目
  • 医院收费单能当凭证用吗
  • 存款利息缴纳个税
  • 小微企业减免附加税会计分录
  • 资产负债表其他应收款怎么填列
  • 在计算缴纳房产税时,不计入房产原值的是
  • 集团公司及子公司员工安排工作
  • 应收账款转让的会计处理
  • 自产产品用于捐赠的会计处理
  • 不达起征点收到销售额如何作分录?
  • 领用外购材料用于动产
  • 加工承揽合同印花税谁交
  • 采购合同可以包含安装吗
  • 公司发票限额按什么计算
  • 开发票时含税和不含税是什么意思?
  • 公共基础设施折旧年限表 20
  • 发工资时忘记扣个税了怎么做账
  • 小区保安有收物业费的权利和义务吗?
  • 商贸流通企业的构成
  • 苹果手机miracast在哪里找到
  • 手把手教你win7换主板不重装系统的方法
  • 如何关闭windows10安全中心服务
  • win10如何设置一键还原系统
  • 网件R6400路由器怎么样?网件R6400上网与传输评测的教程
  • 研发费加计扣除申报表怎么填
  • 利润为负数怎么调
  • 矿山机械设备租赁有限公司
  • 企业所得税可以税前扣除的
  • 进程mmc.exe
  • 企业长期资金的筹集方式
  • 用php生成一个txt文件
  • chrome浏览器快捷方式
  • 海关进口增值税计入什么科目
  • PHP+JQuery+Ajax实现分页方法详解
  • php zmq
  • 所得税季度申报弥补以前年度亏损
  • 公积金会计分录怎么处理2019
  • mysql各种索引的使用场景
  • 代收代付进项税转出吗
  • 保理属于什么行业分类
  • 上月结余金额是什么的
  • 退税已到账还可以更改吗
  • 库存现金挂账多久
  • 专项资金支出流程
  • 中标的工程交易怎么处理
  • 会计报表编制基本要求
  • 金税四期有很多不实的传言
  • 金税四期主要核查什么?
  • 银行的存单丢失了可以补办吗
  • 消费税会计分录处理
  • 公司支付员工工资方式有几种
  • 长期股权投资亏损冲减顺序
  • 工业企业存货发出计价的方法
  • 公司买支票需要带什么资料
  • sql*loader-309
  • bios怎么恢复出厂设置有什么后果?
  • windows自带软件有哪些
  • win7系统计算机管理功能打不开
  • xp系统ip地址设置在哪里
  • vista正版破解
  • centos设置开机启动项
  • win8系统崩溃怎么办
  • winxp怎么改壁纸
  • 新款苹果笔记本测评
  • linux各种命令
  • w8网络设置
  • windows8.1rt
  • perl 文件
  • shell脚本计算执行时间
  • 隐藏应用名字
  • javascript怎么弄
  • 滴滴发票怎么查行程
  • 每月公积金900元交多少
  • 股权转让税收优惠个人所得税
  • 企业承包经营责任制
  • 存款利息需要交税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设