中秋快到了利用python畫(huà)個(gè)月亮和月餅

一、🌕月亮

導(dǎo)入庫(kù)matplotlib和numpy,作為工具直接用。
from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np
布局
創(chuàng)建一個(gè)長(zhǎng)×寬的一個(gè)畫(huà)布大小
fig = plt.figure(figsize=(10,5))
布置3D視角
ax = fig.add_subplot(121, projection='3d')
生成等差數(shù)列的數(shù)據(jù),畫(huà)出一個(gè)球體
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')
此時(shí)我們發(fā)現(xiàn)只畫(huà)了一個(gè)月亮,所以我們打算畫(huà)第二個(gè)月亮,湊成一對(duì)~
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')
效果圖
還可以吧~哈哈哈哈!

二、🌕雪花月餅

導(dǎo)入所需要的庫(kù),用的比較多的是turtle這個(gè)庫(kù)來(lái)寫(xiě)的~
import turtle import time
我們先畫(huà)一個(gè)底層的黃黃的餅作為底部~
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)

既然是雪花月餅,就應(yīng)該是有雪花,接下來(lái)我們來(lái)畫(huà)雪花吧!
采用科赫曲線進(jìn)行畫(huà)雪花。要改變彎曲程度。
def koch(size, n): # 定義彎曲的直線使其有棱角
if n == 0:
turtle.fd(size)
else:
for angle in [0, 60, -120, 60]: # 每一次都對(duì)其進(jìn)行合理的角度改變
turtle.left(angle)
koch(size / 3, n - 1)
因?yàn)榇蛩惝?huà)八個(gè),并且加上顏色,所以七彩雪花~
if a == 1:
turtle.color("black") # 控制畫(huà)筆的顏色
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")
由于是八個(gè)雪花嵌套的,所以要進(jìn)行一個(gè)等比縮放的包裹。
turtle.penup() turtle.goto(-200 * (4 / 7) ** (s - n), 100 * (4 / 7) ** (s - n)) # 每一次都是需要合理的等比例的擴(kuò)大或是縮小 turtle.pendown() turtle.pensize(2) level = 5 koch(400 * (4 / 7) ** (s - n), level) # 大小是一個(gè)一個(gè)試出來(lái)的 # 不能超過(guò)setup的設(shè)定的范圍 600,不然就越界了 turtle.right(120) koch(400 * (4 / 7) ** (s - n), level) turtle.right(120) koch(400 * (4 / 7) ** (s - n), level) # 注意這里koch一次就要轉(zhuǎn)一次角度 turtle.right(120) turtle.hideturtle() # 隱藏畫(huà)筆 flower(n - 1)
效果圖!啊哈哈哈!是雪花月餅呀!

到此這篇關(guān)于中秋快到了利用python畫(huà)出月亮和月餅的文章就介紹到這了,更多相關(guān)用python畫(huà)出月亮和月餅內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
最后,希望我的中秋禮品能帶給你一絲的歡喜~
提前祝中秋快樂(lè)鴨~
相關(guān)文章
Python學(xué)習(xí)筆記之lambda表達(dá)式用法詳解
這篇文章主要介紹了Python學(xué)習(xí)筆記之lambda表達(dá)式用法,結(jié)合實(shí)例形式詳細(xì)分析了lambda表達(dá)式的概念、功能、原理、組成及相關(guān)使用技巧,需要的朋友可以參考下2019-08-08
Matplotlib實(shí)戰(zhàn)之折線圖繪制詳解
折線圖是一種用于可視化數(shù)據(jù)變化趨勢(shì)的圖表,它可以用于表示任何數(shù)值隨著時(shí)間或類(lèi)別的變化,本文主要介紹了如何利用Matplotlib實(shí)現(xiàn)折線圖的繪制,感興趣的可以了解下2023-08-08
Python 項(xiàng)目轉(zhuǎn)化為so文件實(shí)例
今天小編就為大家分享一篇Python 項(xiàng)目轉(zhuǎn)化為so文件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python3+PyQt5實(shí)現(xiàn)自定義窗口部件Counters
這篇文章主要為大家詳細(xì)介紹了python3+PyQt5實(shí)現(xiàn)自定義窗口部件,Counters自定窗口部件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Python Request類(lèi)源碼實(shí)現(xiàn)方法及原理解析
這篇文章主要介紹了Python Request類(lèi)源碼實(shí)現(xiàn)方法及原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
python密碼學(xué)周期置換密碼學(xué)習(xí)
這篇文章主要為大家介紹了python密碼學(xué)周期置換密碼的學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
將Emacs打造成強(qiáng)大的Python代碼編輯工具
這篇文章主要介紹了將Emacs打造成強(qiáng)大的Python代碼編輯工具的方法,人們常說(shuō)Vim是編輯器之神而Emacs是神的編輯器:)需要的朋友可以參考下2015-11-11

