所需工具:
Python
聪明的大脑文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
勤劳的双手文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
注意:本站只提供教程,不提供任何成品+工具+软件链接,仅限用于学习和研究。文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
目录
- 月亮
- 雪花月饼
文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
一、月亮
文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
导入库matplotlib和numpy,作为工具直接用。文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
- from mpl_toolkits.mplot3d import Axes3D
- import matplotlib.pyplot as plt
- import numpy as np
布局文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
创建一个长宽的一个画布大小文章源自灵鲨社区-https://www.0s52.com/bcjc/pythonjc/7406.html
- fig = plt.figure(figsize=(10,5))
布置3D视角
- ax = fig.add_subplot(121, projection='3d')
生成等差数列的数据,画出一个球体
- x = np.linspace(0, 2 * np.pi, 100)
- y = np.linspace(0, np.pi, 100)
- x1 = 10 * np.outer(np.cos(x), np.sin(y))
- y1 = 10 * np.outer(np.sin(x), np.sin(y))
- z = 10 * np.outer(np.ones(np.size(x1)), np.cos(y1))
- ax.plot_surface(x1, y1, z, color='yellow')
此时我们发现只画了一个月亮,所以我们打算画第二个月亮,凑成一对~
- ax = fig.add_subplot(122, projection='3d')
- x = np.linspace(0, 2 * np.pi, 100)
- y = np.linspace(0, np.pi, 100)
- x1 = 10 * np.outer(np.cos(x), np.sin(y))
- y1 = 10 * np.outer(np.sin(x), np.sin(y))
- z = 10 * np.outer(np.ones(np.size(x1)), np.cos(y1))
- ax.plot_surface(x1, y1, z, color='r')
效果图
还可以吧~哈哈哈哈!
二、雪花月饼
导入所需要的库,用的比较多的是turtle这个库来写的~
- import turtle
- import time
我们先画一个底层的黄黄的饼作为底部~
- def circle():
- fillX_y(0, 0)
- turtle.color("#F0E68C")
- for _ in range(30):
- turtle.left(12)
- turtle.begin_fill()
- turtle.forward(230)
- turtle.circle(25, 180)
- turtle.goto(0, 0)
- turtle.left(180)
- turtle.end_fill()
- time.sleep(0.5)
既然是雪花月饼,就应该是有雪花,接下来我们来画雪花吧!
采用科赫曲线进行画雪花。要改变弯曲程度。
- def koch(size, n): # 定义弯曲的直线使其有棱角
- if n == 0:
- turtle.fd(size)
- else:
- for angle in [0, 60, -120, 60]: # 每一次都对其进行合理的角度改变
- turtle.left(angle)
- koch(size / 3, n - 1)
因为打算画八个,并且加上颜色,所以七彩雪花~
- if a == 1:
- turtle.color("black") # 控制画笔的颜色
- elif a == 2:
- turtle.color("purple")
- elif a == 3:
- turtle.color("blue")
- elif a == 4:
- turtle.color("Cyan")
- elif a == 5:
- turtle.color("green")
- elif a == 6:
- turtle.color("yellow")
- elif a == 7:
- turtle.color("orange")
- elif a == 8:
- turtle.color("red")
由于是八个雪花嵌套的,所以要进行一个等比缩放的包裹。
- turtle.penup()
- turtle.goto(-200 * (4 / 7) ** (s - n), 100 * (4 / 7) ** (s - n))
- # 每一次都是需要合理的等比例的扩大或是缩小
- turtle.pendown()
- turtle.pensize(2)
- level = 5
- koch(400 * (4 / 7) ** (s - n), level) # 大小是一个一个试出来的
- # 不能超过setup的设定的范围 600,不然就越界了
- turtle.right(120)
- koch(400 * (4 / 7) ** (s - n), level)
- turtle.right(120)
- koch(400 * (4 / 7) ** (s - n), level) # 注意这里koch一次就要转一次角度
- turtle.right(120)
- turtle.hideturtle() # 隐藏画笔
- flower(n - 1)
效果图!啊哈哈哈!是雪花月饼呀!
最后,希望我的中秋礼品能带给你一丝的欢喜~
提前祝中秋快乐鸭~
1F
登录回复
中秋快乐哟~