Python制作旋转花灯祝大家元宵节快乐(实例代码)

 更新时间:2022年02月15日 14:46:02   作者:Python可乐的呀  
一年一度的元宵节来临,小编在这里祝大家2022元宵节快乐,今天小编给大家分享一篇教程关于Python制作旋转花灯祝大家元宵节快乐,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

1、原材料

1.1 花灯纸

如下所示,还可以加上自己喜欢的图案、文字等。

2.2 Python环境和模块

一台安装了Python环境的电脑,Python环境需要安装以下模块。

numpy
pillow
wxgl

如果没有上述模块,请参考下面的命令安装。

pip install numpy
pip install pillow
pip install wxgl

2、源代码

#元宵节就要到了,花灯要不要来一盏?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[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-')

3、效果

到此这篇关于Python制作旋转花灯祝大家元宵节快乐的文章就介绍到这了,更多相关Python旋转花灯内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 第三方库paramiko的常用方式

    python 第三方库paramiko的常用方式

    这篇文章主要介绍了python 第三方库paramiko的常用方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 基于多进程中APScheduler重复运行的解决方法

    基于多进程中APScheduler重复运行的解决方法

    今天小编就为大家分享一篇基于多进程中APScheduler重复运行的解决方法,具有很好的价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python os.listdir()乱码解决方案

    python os.listdir()乱码解决方案

    在本篇文章里小编给大家整理的是一篇关于python os.listdir()乱码解决方案,对此有兴趣的朋友们可以学习下。
    2021-01-01
  • Python ctypes库底层交互秘籍实例探究

    Python ctypes库底层交互秘籍实例探究

    ctypes是Python标准库中的外部函数库,允许Python调用动态链接库中的函数,它提供了与C兼容的数据类型和允许Python调用共享库中的函数,对系统级编程和与硬件交互非常有用
    2024-01-01
  • 集调试共享及成本控制Prompt工具PromptLayer使用指南

    集调试共享及成本控制Prompt工具PromptLayer使用指南

    这篇文章主要介绍了集调试共享及成本控制Prompt工具PromptLayer使用指南,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Anaconda安装后Spyder闪退解决办法

    Anaconda安装后Spyder闪退解决办法

    作为研究深度学习的一员,经常会遇到各种突如其来的bug,最近又碰到了一个关于spyder打开后又闪退的问题,下面这篇文章主要给大家介绍了关于Anaconda安装后Spyder闪退的解决办法,需要的朋友可以参考下
    2023-04-04
  • Python OS模块实例详解

    Python OS模块实例详解

    这篇文章主要介绍了Python OS模块,结合实例形式总结分析了Python使用OS解析文件路径、判断文件、目录等相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • 使用Python第三方库xlrd读取Excel中的数据的流程步骤

    使用Python第三方库xlrd读取Excel中的数据的流程步骤

    这篇文章主要给大家介绍了使用Python第三方库xlrd读取Excel中的数据的流程步骤,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-12-12
  • 在Django中同时使用多个配置文件的方法

    在Django中同时使用多个配置文件的方法

    这篇文章主要介绍了在Django中同时使用多个配置文件的方法,Django是丰富多彩的Python web框架中人气最高的一个,需要的朋友可以参考下
    2015-07-07
  • python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南

    python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南

    最近在做一个项目,必须把结果保存到excel文件中,下面这篇文章主要给大家介绍了关于python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08

最新评论