抖音热门《点燃我,温暖你》李峋同款爱心特效复刻

news2024/9/25 19:24:44

引言

最近,电视剧《点燃我,温暖你》的热度在抖音上持续升温,特别是剧中李峋的爱心特效,让不少观众为之心动。许多粉丝都在寻找这个特效的源码,希望能够在自己的电脑上重现这一浪漫场景。幸运的是,我在B站上找到了一位技术大佬的教程,经过一番尝试,成功复刻了这个效果。现在,我将这个复刻过程分享给大家。

效果预览

在开始之前,先来看看我们即将实现的效果:一个动态的、色彩斑斓的爱心,就像剧中李峋展示的那样。这个爱心不仅会跳动,还会随着时间变化而闪烁,非常吸引人。

环境与工具准备

为了实现这个效果,你需要准备以下工具:

  • Python环境:确保你的电脑上安装了Python。
  • PyCharm:这是一个强大的Python IDE,可以帮助你更好地编写和调试代码。

代码详解

接下来,我将展示实现这个效果的核心代码,并解释每一部分的功能。

1. 导入必要的库

import random
from math import sin, cos, pi, log
from tkinter import *

2. 设置画布参数

CANVAS_WIDTH = 640
CANVAS_HEIGHT = 480
CANVAS_CENTER_X = CANVAS_WIDTH / 2
CANVAS_CENTER_Y = CANVAS_HEIGHT / 2
IMAGE_ENLARGE = 11
HEART_COLOR = '#FF69B4'

3. 定义爱心函数

def heart_function(t, shrink_ratio=IMAGE_ENLARGE):
    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 += CANVAS_CENTER_X
    y += CANVAS_CENTER_Y
    return int(x), int(y)

4. 实现爱心跳动效果

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

5. 绘制爱心

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)

6. 主函数

if __name__ == '__main__':
    root = Tk()
    canvas = Canvas(root, bg='black', height=CANVAS_HEIGHT, width=CANVAS_WIDTH)
    canvas.pack()
    heart = Heart()
    draw(root, canvas, heart)
    root.mainloop()

7. 效果展示图

结语

通过上述步骤,你可以在自己的电脑上重现《点燃我,温暖你》中的爱心特效。这个项目不仅能让你更深入地了解Python编程,还能让你体验到编程带来的乐趣。希望你喜欢这个复刻过程,也希望你能在编程的道路上越走越远。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【白话MQ】消息队列MQ的使用和选型

快速导航 面试题:为什么使用消息队列?1. 解耦2. 异步3. 削峰 消息队列的优缺点?1. 系统可用性可能会降低2. 系统复杂度提高3. 一致性的挑战 Kafka、ActiveMQ、RabbitMQ、RocketMQ 的区别和适合的场景?区别:使用建议&am…

【Python机器学习系列】使用SMAC优化SVC分类模型的超参数(案例+源码)

这是我的第352篇原创文章。 一、引言 在机器学习和人工智能领域,优化超参数以提升模型性能是一项至关重要的任务。SMAC3,全称Sequential Model-based Algorithm Configuration,是一个强大且灵活的贝叶斯优化包,专注于高效地寻找算…

SpringBoot依赖之Spring Boot Admin(二)

本文核心:集成Prometheus 指标实现应用指标图表监控 作者语录: 我们一直在追逐需求和迭代的路上,却不曾回头看自己曾经的作品是否给自己留下经验和遗憾。技术永远没有边界,但个人必须对自己过往的行为买单,无论对与错…

TestNet 资产管理信息收集系统,附下载链接

我们团队在进行例行的安全活动时,信息管理和监控变得越来越重要了。尤其是在 hvv 和 zb 的任务中,我们需要对公司的资产有一个全貌的了解,以便及时识别和修复潜在的安全漏洞。这个过程通常涉及到大量的信息收集和数据分析,往往会消…

基于多技术融合下生态系统服务权衡与协同动态分析及论文写作方法

生态系统服务是指生态系统所形成的用于维持人类赖以生存和发展的自然环境条件与效用,是人类直接或间接从生态系统中得到的各种惠益。联合国千年生态系统评估(Millennium ecosystem assessment,MA)提出生态系统服务包括供给、调节、…

Vue——day13之脚手架

目录 概述 创建一个脚手架 首先下载脚手架 创建文件 脚手架中代码分析 main.js index.html render 为什么要用render 脚手架的默认配置 总结 概述 Vue的脚手架是一个快速构建Vue项目的工具,它集成了一系列的开发工具和配置,提供了一种标准化的…

MFC修改控件ID的详细说明

控件的ID可以在该对话框的.rc中修改 首先需要开启资源视图 然后在资源视图中打开该对话框 选中某个控件,就可以在属性面板中修改ID了 在此处修改ID后,对应Resource.h中也会发生变化 若在.rc中创建了一个控件时,Resource.h中会生成一个对应…

XML 保存 显示XML 方式 encoding=“UTF8“

XML 保存 encoding“UTF8” 将文件另存为 编码 UTF8 , 跟encoding“UTF8” 保持一致 。

NVDLA专题13:NVDLA软件部分设计和Compiler library

NVDLA拥有完整的软件生态,包括从编译神经网络到推理的支持。这个生态的一部分包括on-device软件栈(software stack),它是NVDLA开源版本的一部分。此外,英伟达将提供完整的training infrastructure,用来构建…

基于yolov8的肺炎检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的肺炎检测系统是一项前沿的深度学习应用,该系统利用YOLOv8这一先进的目标检测算法,能够高效地分析病人的X射线肺部图像,从而快速识别出肺炎的征状。YOLOv8作为Ultralytics公司开发的最新版本,引入了多项…

猎板通信PCB动态:苹果16系列多款设备上线,PCB供应商的机遇与挑战!

在最新的苹果供应链动态中,苹果公司对于PCB供应商的选择标准非常严格,主要考虑因素包括技术能力、生产规模、质量控制、成本效益、供应链稳定性以及环境和社会责任等。随着苹果产品技术的不断进步,PCB供应商也需要具备相应的技术升级能力&…

安泰功率放大器在微纳光固化3D打印中的具体应用

随着科技的进步,3D打印技术已经渗透到各个领域,尤其是微纳光固化3D打印技术。这种技术结合了光学、材料科学和微电子学的知识,能够制造出具有微米级精度的复杂物体。本文Aigtek安泰电子将带你探索功率放大器在微纳光固化3D打印中的应用&#…

太简单,用这个例子详解TCP协议你肯定不知道

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友 当你在微信上给你的朋友发送一条消息,或者在淘宝浏览商品时,这些信息是如何安全、准确地…

LLM - 理解 多模态大语言模型 (MLLM) 的架构与相关技术 (二)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142063880 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 多模态…

CDGA|推动数据治理与传统产业深度融合:策略与实践路径

在数字化浪潮席卷全球的今天,数据已成为推动经济社会发展的关键生产要素。传统产业,作为国民经济的基石,正面临着前所未有的转型挑战与机遇。如何让数据治理这一现代管理理念与实践方法深度融入传统产业,促进其转型升级与高质量发…

K均值聚类

根据到给点样本的距离,来聚类。 1.曼哈顿距离、 2.欧几里得距离 直线距离 3.切比雪夫距离 4.闵氏距离 5.余弦相似度 对数据大小/长度等不关注,只关注相似度。 6.汉明距离 二进制距离 二、密度聚类 DBSCAN 前提是样本是根据紧密程度分布的。 先用超参…

Go语言概述

1.Go语言的特点 1)从语言层面支持并发,实现简单 2)goroutine,轻量级线程,可实现大并发处理,高效利用多核 3)垃圾回收机制,内存自动回收,不需要开发人员管理 4&#xff0…

【网络】DNS协议、ICMP协议

DNS协议与ICMP协议 文章目录 1.DNS协议1.1DNS背景1.2域名简介1.3域名解析过程(了解)1.4使用dig工具分析DNS过程 2.ICMP协议2.1ICMP的功能2.2ping命令2.3traceroute命令 1.DNS协议 DNS(Domain Name System,域名系统)协…

idear获取git项目

最近想下载个ruoyi项目来包装简历,结果打开idear总是上一个项目,找不到get for vcs只好自己捣鼓了,顺便记录留着下次用。 步骤: 1. 2. 3.输入我们想访问的地址 eg: 点击克隆,我们就能获取项目到本地了。

C语言 | Leetcode C语言题解之第396题旋转函数

题目&#xff1a; 题解&#xff1a; #define MAX(a, b) ((a) > (b) ? (a) : (b))int maxRotateFunction(int* nums, int numsSize){int f 0, numSum 0;for (int i 0; i < numsSize; i) {f i * nums[i];numSum nums[i];}int res f;for (int i numsSize - 1; i &g…