zoukankan      html  css  js  c++  java
  • 程序员式优雅表白,教你用python代码画爱心

    还能用python代码画爱心?还有这种操作?这是什么原理?

    [dl]15-2203[/dl]

    不相信python代码可以画爱心?先来一张效果图来看看效果吧!

    用python代码画爱心的思路是怎样的?

    1、怎么画心形曲线

    2、怎么填满心形曲线

    3、怎么用 python 画出爱心

    接下来看好了,满满的都是干货,不收藏将是遗憾哦!

    第一:怎么画心形曲线

    这个最难的部分,前人已将大树栽好,我们只要记住公式,即可在大树下乘凉哦!

    今天我们选用中上的那个图形,一起来看看吧!

    第二:怎样填满爱心曲线?

    简单说:函数=0 是一根线, 那线的左边跟右边就是大于 0 跟小于 0.

    取x, y = 0 , 发现 函数 <=0 是成立的,先试试!

    第三:怎么用 python 画出爱心?

    我们先测试一下公式:, 把公式放到 python 中, 借助 sympy 这个库,确认这个公式是否可行。

    from sympy import var, plot_implicit

    var('x y ')
    plot_implicit((x**2+(-y)**2-1)**3+x**2*(-y)**3)

    效果如下图所示:(好像还不错哦)。

    我们把一行画心的代码解析一下,是这样:

    l2=[]
    # 将纵向每个字符当作 y 坐标的刻度
    for y in range(15,-15,-1):
    l3 = []
    # 将横向每个字符当作 x 坐标的刻度
    for x in range(-30,30):
    # 如果 x,y 点在心形内,则将一个字符加入到行,否则加入空字符
    l3.append((' I love U'[(x-y)%9]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' '))
    l2.append(''.join(l3))
    l1 =' '.join(l2)
    for i in l1:
     print("33[91m"+i,end="",flush=True)

    下面这段代码,是不是跟我们用的公式很像, 只不过做了 x y 轴的缩放:

    ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 

    下面这段代码的意思是:从 ' I love U' 里挑字符出来拼行. 为毛 x-y ? 只为了斜一点, 但要求是保证它的增速为 1 . 你用 x 也行 但画出来就是耿直的 I love U了。

    ' I love U'[(x-y)%9] 

    我们只需要将字符当作坐标刻度。去填满 即可!

    最后就是 print 控制颜色:

    33[91m

    基本就这样,有兴趣的同学可以将画心的函数都试一下.理论上都可以画出来。 只不过有一些是极坐标,要做一些转换才行。

  • 相关阅读:
    ajax、json一些整理(2)
    ajax、json一些整理(1)
    C# DllImport的用法
    asp.net 获取当前项目路径
    C# 中关闭当前线程的四种方式 .
    DataGridView自定义RichTextBox列
    C#winform的datagridview设置选中行
    Other Linker flags 添加 -Objc导致包冲突
    nat打洞原理和实现
    成为顶尖自由职业者必备的七个软技能之四:如何成为销售之王(转)
  • 原文地址:https://www.cnblogs.com/zhzhiy/p/11698943.html
Copyright © 2011-2022 走看看