Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂(實(shí)例代碼)
1、原材料
1.1 花燈紙
如下所示,還可以加上自己喜歡的圖案、文字等。

2.2 Python環(huán)境和模塊
一臺(tái)安裝了Python環(huán)境的電腦,Python環(huán)境需要安裝以下模塊。
numpy pillow wxgl
如果沒有上述模塊,請(qǐng)參考下面的命令安裝。
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=燈籠底圓的周長(zhǎng)
r, h = 1, 2*np.pi*rows/cols
# r=1.5 h=2.66
#制作半徑1個(gè)單位、高度2.668個(gè)單位的圓筒狀龍骨了。
#將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個(gè)點(diǎn)抽取1個(gè)點(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Pydantic進(jìn)行數(shù)據(jù)驗(yàn)證的方法詳解
在 Python 中,有許多庫可用于數(shù)據(jù)驗(yàn)證和處理,其中一個(gè)流行的選擇是 Pydantic,下面就跟隨小編一起學(xué)習(xí)一下Pydantic 的基本概念和用法吧2024-01-01
Python for循環(huán)與range函數(shù)的使用詳解
這篇文章主要介紹了Python for循環(huán)與range函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
基于python的socket實(shí)現(xiàn)單機(jī)五子棋到雙人對(duì)戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了基于python的socket實(shí)現(xiàn)單機(jī)五子棋到雙人對(duì)戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
Python3標(biāo)準(zhǔn)庫之dbm UNIX鍵-值數(shù)據(jù)庫問題
dbm是面向DBM數(shù)據(jù)庫的一個(gè)前端,DBM數(shù)據(jù)庫使用簡(jiǎn)單的字符串值作為鍵來訪問包含字符串的記錄。這篇文章主要介紹了Python3標(biāo)準(zhǔn)庫:dbm UNIX鍵-值數(shù)據(jù)庫的相關(guān)知識(shí),需要的朋友可以參考下2020-03-03
一文教你如何用Python輕輕松松操作Excel,Word,CSV
數(shù)據(jù)處理是 Python 的一大應(yīng)用場(chǎng)景,而 Excel 又是當(dāng)前最流行的數(shù)據(jù)處理軟件。本文將為大家詳細(xì)介紹一下如何用Python輕輕松松操作Excel、Word、CSV,需要的可以參考一下2022-02-02
解讀opencv中cv2.imread()返回值為None問題及解決
這篇文章主要介紹了解讀opencv中cv2.imread()返回值為None問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11

