Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂(實(shí)例代碼)
1、原材料
1.1 花燈紙
如下所示,還可以加上自己喜歡的圖案、文字等。
2.2 Python環(huán)境和模塊
一臺安裝了Python環(huán)境的電腦,Python環(huán)境需要安裝以下模塊。
numpy pillow wxgl
如果沒有上述模塊,請參考下面的命令安裝。
pip install numpy pip install pillow pip install wxgl
2、源代碼
#元宵節(jié)就要到了,花燈要不要來一盞?3D的那種 # -*- coding: utf-8 -*- import numpy as np from PIL import Image import wxgl.wxplot as plt im = np.array(Image.open('D:/Lantern/venv/res/paper.png'))/255 rows, cols, deep = im.shape #np.pi=π rows=燈籠高 cols=燈籠底圓的周長 r, h = 1, 2*np.pi*rows/cols # r=1.5 h=2.66 #制作半徑1個單位、高度2.668個單位的圓筒狀龍骨了。 #將0到2π分成942份 theta = np.linspace(0, 2*np.pi, cols) x = r*np.cos(theta) y = r*np.sin(theta) #將0到h=2.66分成400份 z = np.linspace(0, h, rows) xs = np.tile(x, (rows,1)) ys = np.tile(y, (rows,1)) zs = z.repeat(cols).reshape((rows,cols)) xs1 = np.tile(x, (rows,1))+3 xs2 = np.tile(x, (rows,1))-3 ys1 = np.tile(y, (rows,1))+3 ys2 = np.tile(y, (rows,1))-3 #制作旋轉(zhuǎn)葉輪 theta = np.linspace(0, 2*np.pi, 18, endpoint=False) x[2::3] = x[1::3] x[1::3] = 0 y[2::3] = y[1::3] y[1::3] = 0 z = np.ones(18) * h * 0.9 vs = np.stack((x,y,z), axis=1) vs1 = np.stack((x+3,y,z), axis=1) vs2 = np.stack((x-3,y,z), axis=1) vs3 = np.stack((x,y+3,z), axis=1) vs4 = np.stack((x,y-3,z), axis=1) #每隔10個點(diǎn)抽取1個點(diǎn),用mesh的方法畫出龍骨形狀 plt.mesh(xs, ys, zs, im[::-1]) plt.mesh(xs1, ys, zs, im[::-1]) plt.mesh(xs2, ys, zs, im[::-1]) plt.mesh(xs, ys1, zs, im[::-1]) plt.mesh(xs, ys2, zs, im[::-1]) #旋轉(zhuǎn)葉輪畫成紅色 plt.surface(vs, color='#C03000', method='T', mode='FCBL', alpha=0.8) plt.surface(vs1, color='#C03000', method='T', mode='FCBL', alpha=0.8) plt.surface(vs2, color='#C03000', method='T', mode='FCBL', alpha=0.8) plt.surface(vs3, color='#C03000', method='T', mode='FCBL', alpha=0.8) plt.surface(vs4, color='#C03000', method='T', mode='FCBL', alpha=0.8) #白色照明燈 plt.sphere((0,0,h*0.4), 0.4, '#FFFFFF', slices=60, mode='FCBC') plt.sphere((3,0,h*0.4), 0.4, '#FFFFFF', slices=60, mode='FCBC') plt.sphere((-3,0,h*0.4), 0.4, '#FFFFFF', slices=60, mode='FCBC') plt.sphere((0,3,h*0.4), 0.4, '#FFFFFF', slices=60, mode='FCBC') plt.sphere((0,-3,h*0.4), 0.4, '#FFFFFF', slices=60, mode='FCBC') #紅線燈籠線 plt.plot((0,0), (0,0), (0.4*h, 1.5*h), width=3.0, style='solid', cmap='hsv', caxis='z') plt.plot((3,3), (0,0), (0.4*h, 1.5*h), width=3.0, style='solid', cmap='hsv', caxis='z') plt.plot((-3,-3), (0,0), (0.4*h, 1.5*h), width=3.0, style='solid', cmap='hsv', caxis='z') plt.plot((0,0), (3,3), (0.4*h, 1.5*h), width=3.0, style='solid', cmap='hsv', caxis='z') plt.plot((0,0), (-3,-3), (0.4*h, 1.5*h), width=3.0, style='solid', cmap='hsv', caxis='z') print(plt.title.__doc__) #紅色標(biāo)題 plt.title(text='元宵節(jié)快樂!', size=64, color='red', pos=(0,0,0),align='center',weight='bold') plt.show(rotation='h-')
3、效果
到此這篇關(guān)于Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂的文章就介紹到這了,更多相關(guān)Python旋轉(zhuǎn)花燈內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pip更新問題的解決:'python -m pip install -
這篇文章主要介紹了pip更新問題的解決:'python -m pip install --upgrade pip' 報錯問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04python自動統(tǒng)計zabbix系統(tǒng)監(jiān)控覆蓋率的示例代碼
這篇文章主要介紹了python自動統(tǒng)計zabbix系統(tǒng)監(jiān)控覆蓋率的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04VScode查看python f.write()的文件亂碼問題及解決方法
這篇文章主要介紹了VScode查看python f.write()的文件亂碼問題及解決方法,本文通過圖文并茂的形式給大家分享解決方法,需要的朋友可以參考下2023-02-02Python3視頻轉(zhuǎn)字符動畫的實(shí)例代碼
這篇文章主要介紹了Python3視頻轉(zhuǎn)字符動畫的實(shí)例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08Python數(shù)據(jù)結(jié)構(gòu)與算法之常見的分配排序法示例【桶排序與基數(shù)排序】
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之常見的分配排序法,結(jié)合實(shí)例形式分析了桶排序與基數(shù)排序的相關(guān)原理及實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12