使用Python绘制跳动的爱心,让你的代码也充满爱意!

这篇具有很好参考价值的文章主要介绍了使用Python绘制跳动的爱心,让你的代码也充满爱意!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天我要分享一个浪漫小技巧,使用Python中的HTML制作一个立体、动态的小爱心。通过成千上百个小爱心的组合,形成一个大爱心,从内到外呈现出立体的效果,给人带来强烈的视觉冲击。这个小技巧非常浪漫,让人感受到爱的力量。

一.粉色爱心


</style>
  <body>
    <!-- 樱花 -->
    <div id="jsi-cherry-container" class="container">
      <audio autoplay="autopaly">
        <source src="renxi.mp3" type="audio/mp3" />
      </audio>
      <img class="img" src="./123.png" alt="" />
      <!-- 爱心 -->
      <canvas id="pinkboard" class="container"> </canvas>
    </div>
(function () {
      var b = 0;
      var c = ["ms", "moz", "webkit", "o"];
      for (var a = 0; a < c.length && !window.requestAnimationFrame; ++a) {
        window.requestAnimationFrame = window[c[a] + "RequestAnimationFrame"];
        window.cancelAnimationFrame =
          window[c[a] + "CancelAnimationFrame"] ||
          window[c[a] + "CancelRequestAnimationFrame"];
      }
      if (!window.requestAnimationFrame) {
        window.requestAnimationFrame = function (h, e) {
          var d = new Date().getTime();
          var f = Math.max(0, 16 - (d - b));
          var g = window.setTimeout(function () {
            h(d + f);
          }, f);
          b = d + f;
          return g;
        };
      }
      if (!window.cancelAnimationFrame) {
        window.cancelAnimationFrame = function (d) {
          clearTimeout(d);
        };
      }
    })();

    /*
     *Point class
     */
    var Point = (function () {
      function Point(x, y) {
        this.x = typeof x !== "undefined" ? x : 0;
        this.y = typeof y !== "undefined" ? y : 0;
      }
      Point.prototype.clone = function () {
        return new Point(this.x, this.y);
      };
      Point.prototype.length = function (length) {
        if (typeof length == "undefined")
          return Math.sqrt(this.x * this.x + this.y * this.y);
        this.normalize();
        this.x *= length;
        this.y *= length;
        return this;
      };
      Point.prototype.normalize = function () {
        var length = this.length();
        this.x /= length;
        this.y /= length;
        return this;
      };
      return Point;
    })();

    /*
     * Particle class
     */
    var Particle = (function () {
      function Particle() {
        this.position = new Point();
        this.velocity = new Point();
        this.acceleration = new Point();
        this.age = 0;
      }
      Particle.prototype.initialize = function (x, y, dx, dy) {
        this.position.x = x;
        this.position.y = y;
        this.velocity.x = dx;
        this.velocity.y = dy;
        this.acceleration.x = dx * settings.particles.effect;
        this.acceleration.y = dy * settings.particles.effect;
        this.age = 0;
      };
      Particle.prototype.update = function (deltaTime) {
        this.position.x += this.velocity.x * deltaTime;
        this.position.y += this.velocity.y * deltaTime;
        this.velocity.x += this.acceleration.x * deltaTime;
        this.velocity.y += this.acceleration.y * deltaTime;
        this.age += deltaTime;
      };
      Particle.prototype.draw = function (context, image) {
        function ease(t) {
          return --t * t * t + 1;
        }
        var size = image.width * ease(this.age / settings.particles.duration);
        context.globalAlpha = 1 - this.age / settings.particles.duration;
        context.drawImage(
          image,
          this.position.x - size / 2,
          this.position.y - size / 2,
          size,
          size
        );
      };
      return Particle;
    })();

运行结果:

python爱心代码,java,javascript,前端

 二.蓝色动态爱心

表白界面

python爱心代码,java,javascript,前端

下边是表白运行代码:


def OK():            #同意按钮
    root.destroy()
    love()           #同意后显示漂浮爱心
def NO():            #拒绝按钮,拒绝不会退出,必须同意才可以退出哦~
    tk.messagebox.showwarning('❤','再给你一次机会!')
def closeWindow():
    tk.messagebox.showwarning('❤','逃避是没有用的哦')
————————————————
版权声明:本文为CSDN博主「Want595」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

 蓝色爱心代码

python爱心代码,java,javascript,前端

 

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)

其他函数 文章来源地址https://www.toymoban.com/news/detail-717314.html


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 - dy
def 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 - dy
def 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)

到了这里,关于使用Python绘制跳动的爱心,让你的代码也充满爱意!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实战演示:使用Python编写人脸识别测试代码,让你的应用拥有智能感知能力

    人脸识别是计算机视觉领域的一个重要应用。它使用计算机算法来识别和验证面部特征,通常用于安全认证、视频监控、人脸比对等方面。近年来,随着深度学习技术的发展,人脸识别的性能得到了极大的提升,成为了智能感知应用中的重要一环。在这篇文章中,我们将使用

    2024年02月12日
    浏览(31)
  • Python跳动的爱心

    序号 文章目录 直达链接 1 浪漫520表白代码 https://want595.blog.csdn.net/article/details/130666881 2 满屏表白代码 https://want595.blog.csdn.net/article/details/129794518 3 跳动的爱心 https://want595.blog.csdn.net/article/details/129503123 4 漂浮爱心 https://want595.blog.csdn.net/article/details/128808630 5 爱心光波 https://wa

    2024年02月03日
    浏览(29)
  • 9 个让你的 Python 代码更快的小技巧

    哈喽大家好,我是咸鱼 我们经常听到 “Python 太慢了”,“Python 性能不行”这样的观点。但是,只要掌握一些编程技巧,就能大幅提升 Python 的运行速度。 今天就让我们一起来看下让 Python 性能更高的 9 个小技巧 原文链接: https://medium.com/techtofreedom/9-fabulous-python-tricks-that-m

    2024年02月03日
    浏览(38)
  • 掌握python的dataclass,让你的代码更简洁优雅

    dataclass 是从 Python3.7 版本开始,作为标准库中的模块被引入。 随着 Python 版本的不断更新, dataclass 也逐步发展和完善,为 Python 开发者提供了更加便捷的数据类创建和管理方式。 dataclass 的主要功能在于帮助我们简化数据类的定义过程。 本文总结了几个我平时使用较多 data

    2024年03月16日
    浏览(36)
  • 【学会这几个VSCode插件,让你的Python代码更优秀】

    VSCode(Visual Studio Code)是由微软研发的一款免费、开源的跨平台文本(代码)编辑器,一般主要用于轻量级的编程代码工作,就非常适合Python,同时在前端开发方面也有举足轻重的地位。但如果想用于Java代码编写就非常不适合了,因为使用Java的工程都比较庞大,我们的Java工

    2023年04月26日
    浏览(44)
  • 6种打包Python代码的方法,让你的程序变成exe应用!

    Python是一种高级编程语言,它具有易学易用、跨平台等优点,因此在开发中得到了广泛的应用。 然而,Python代码需要在Python解释器中运行,这对于一些用户来说可能不太方便。 因此,将Python代码打包成可执行文件(exe)是一种很好的解决方案。 本文将介绍6种将Python代码打包

    2024年02月16日
    浏览(41)
  • 6种打包Python代码的方法,让你的程序变成exe应用

    Python是一种高级编程语言,它具有易学易用、跨平台等优点,因此在开发中得到了广泛的应用。 然而,Python代码需要在Python解释器中运行,这对于一些用户来说可能不太方便。 因此,将Python代码打包成可执行文件(exe)是一种很好的解决方案。 本文将介绍6种将Python代码打包

    2024年01月18日
    浏览(32)
  • 让你的代码动起来:Python进度条神器tqdm详解及应用实例

    各位Python高手,今天我要给大家介绍一个好用的库,它就是: tqdm tqdm在阿拉伯语中的意思是 \\\"进展\\\",所以这个库也被称为 \\\"快速进展条\\\"。不得不说,这个名字真的很有创意! 让我们想象一下,你正在运行一个耗时的数据处理任务或者训练一个复杂的深度学习模型。你坐在那

    2024年02月07日
    浏览(51)
  • 程序员教你用代码制作3d爱心跳动特效,正好拿去送给女神给她个惊喜

      🐱‍🏍 【晚安独角兽】:hello你好我是独角兽,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!  🎉   博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你

    2023年04月22日
    浏览(40)
  • 程序员的520花式绘制爱心代码大全

    声明 :代码是祖传代码,我不知道原创是谁了,修修改改。主要是为了给情侣们用,虽然自己贵为单身狗。 matlab代码: matlab代码如下: python代码: python代码: 演示: 前端浪漫表白 网站可访问: 已部署到网址,可访问:https://yanghanwen.xyz/ai/ 此网站用不变更,致曾最爱的人

    2024年02月03日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包