利用Python画出月亮和月饼

🌕月亮

7C9C25EE-D528-78BD-D5FB-86CC8B46461A.png

  1. 导入库matplotlibnumpy,作为工具直接用。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
  1. 布局
  • 创建一个长×宽的一个画布大小
fig = plt.figure(figsize=(10,5))
  • 布置3D视角
ax = fig.add_subplot(121, projection='3d')
  • 生成等差数列的数据,画出一个球体
x = np.linspace(, 2 * np.pi, 100)
y = np.linspace(, 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(, 2 * np.pi, 100)
y = np.linspace(, 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')
  • 效果图

    还可以吧~哈哈哈哈!

3EC71123-3F87-FD08-EF72-AFFCF8F3AFC6.png

🌕雪花月饼

8413F6D4-31C0-393D-754C-D2D65FE77A69.png

  • 导入所需要的库,用的比较多的是turtle这个库来写的~
import turtle
import time
  • 我们先画一个底层的黄黄的饼作为底部~
def circle():
    fillX_y(, )
    turtle.color("#F0E68C")
    for _ in range(30):
        turtle.left(12)
        turtle.begin_fill()
        turtle.forward(230)
        turtle.circle(25, 180)
        turtle.goto(, )
        turtle.left(180)
        turtle.end_fill()
        time.sleep(0.5)

F3D76325-031D-6657-08D1-6F5BA55D47AE.png

  • 既然是雪花月饼,就应该是有雪花,接下来我们来画雪花吧!

    采用科赫曲线进行画雪花。要改变弯曲程度。

def koch(size, n):  # 定义弯曲的直线使其有棱角
    if n == :
        turtle.fd(size)
    else:
        for angle in [, 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)
  • 效果图!啊哈哈哈!是雪花月饼呀!

425A2797-31AE-7322-D774-F3611FE3930C.png

放个动态,体验一下画大饼的感jio~

90D4421C-5F96-05F4-B3EF-473F210DF960.gif

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的
为您推荐
    暂时没有数据