tft每日頭條

 > 生活

 > python畫星空代碼

python畫星空代碼

生活 更新时间:2024-12-24 01:31:11

1、原材料1.1 花燈紙如下所示,還可以加上自己喜歡的圖案、文字等。

python畫星空代碼(利用Python制作旋轉花燈)1

2.2 Python環境和模塊

一台安裝了Python環境的電腦,Python環境需要安裝以下模塊。

幹貨主要有:

① 200 多本 Python 電子書(和經典的書籍)應該有

② Python标準庫資料(最全中文版)

③ 項目源碼(四五十個有趣且可靠的練手項目及源碼)

④ Python基礎入門、爬蟲、網絡開發、大數據分析方面的視頻(适合小白學習)

⑤ Python學習路線圖(告别不入流的學習)私信小編01即可獲取大量Python學習資源

numpy pillow wxgl

如果沒有上述模塊,請參考下面的命令安裝。

pip install numpy pip install pillow pip install wxgl

3.源代碼

#元宵節就要到了,花燈要不要來一盞?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 #制作旋轉葉輪 theta = np.linspace(0, 2*np.pi, 18, endpoint=False) x = r*np.cos(theta) y = r*np.sin(theta) 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個點抽取1個點,用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]) #旋轉葉輪畫成紅色 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__) #紅色标題 plt.title(text='元宵節快樂!', size=64, color='red', pos=(0,0,0),align='center',weight='bold') plt.show(rotation='h-')

4、效果

python畫星空代碼(利用Python制作旋轉花燈)2

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved