程序員式優雅表白,教你用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 ='\n'.join(l2)
for i in l1:
 print("\033[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 控制顏色:

\033[91m

基本就這樣,有興趣的同學可以將畫心的函數都試一下.理論上都可以畫出來。 只不過有一些是極坐標,要做一些轉換才行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM