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