最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過Python繪制中國結(jié)的示例代碼

 更新時間:2022年01月20日 09:44:35   作者:FrigidWinter  
再過不久就要到新年了,所以這篇文章將為大家介紹一下如何通過Python代碼繪制一個中國結(jié),文中的示例代碼講解詳細(xì),感興趣的可以動手試一試

1 中國結(jié)的組成部分

中國結(jié)是一種手工編織工藝品,它身上所顯示的情致與智慧正是漢族古老文明中的一個側(cè)面。因為其外觀對稱精致,可以代表漢族悠久的歷史,符合中國傳統(tǒng)裝飾的習(xí)俗和審美觀念,故命名為中國結(jié)。中國結(jié)代表著團(tuán)結(jié)幸福平安,特別是在民間,它精致的做工深受大眾的喜愛。其主要組成部分如下圖所示。

2 設(shè)計中國結(jié)對象

基于Python Turtle庫實現(xiàn)繪制,首先設(shè)計一個中國結(jié)對象,畫筆顏色就選擇中國紅。再定義一個__goto()函數(shù)封裝turtle庫對畫筆移動的操作。

import turtle as t

class chineseKnot:
? '''
? * @breif: 中國結(jié)
? ''' ?
? def __init__(self) -> None:
? ? # 畫筆初始化
? ? self.t = t
? ? self.t.pensize(10)
? ? self.t.setup(700, 700)
? ? self.t.pencolor("red")
? ? self.t.speed(14)
? ? # 結(jié)心坐標(biāo)
? ? self.x = 0
? ? self.y = 200
? ??
? '''
? * @breif: 畫筆移動到指定位置
? * @param[in]: x -> 畫筆移動位置橫坐標(biāo)
? * @param[in]: y -> 畫筆移動位置縱坐標(biāo)
? * @retval: None
? ''' ?
? def __goto(self, x: int, y: int) -> None:
? ? self.t.penup()
? ? self.t.goto(x,y)
? ? self.t.pendown()

3 繪制結(jié)體

def drawBody(self) -> None:
    for i in range(11):
        self.__goto(self.x - i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))
        self.t.seth(-45)
        self.t.fd(200)
        self.__goto(self.x + i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))
        self.t.seth(-135)
        self.t.fd(200)

4 繪制耳翼

def drawEdge(self) -> None:
? ? for i in range(4):
? ? ? # 左上角
? ? ? self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),
? ? ? ? ? ? ? ? ? 200 - 10 * sqrt(2) - i * 20 * sqrt(2))
? ? ? self.t.seth(135)
? ? ? self.t.fd(20)
? ? ? self.t.circle(10, 180)
? ? ? self.t.fd(20)

? ? ? # 右上角
? ? ? self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),
? ? ? ? ? ? ? ? ? 200 - 10 * sqrt(2) - i * 20 * sqrt(2))
? ? ? self.t.seth(45)
? ? ? self.t.fd(20)
? ? ? self.t.circle(-10, 180)
? ? ? self.t.fd(20)

? ? ? # 左下角
? ? ? self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),
? ? ? ? ? ? ? ? ? 200 - 190 * sqrt(2) + i * 20 * sqrt(2))
? ? ? self.t.seth(-135)
? ? ? self.t.fd(20)
? ? ? self.t.circle(-10, 180)
? ? ? self.t.fd(20)
? ? ? ?
? ? ? # 右下角
? ? ? self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),
? ? ? ? ? ? ? ? ? 200 - 190 * sqrt(2) + i * 20 * sqrt(2))
? ? ? self.t.seth(-45)
? ? ? self.t.fd(20)
? ? ? self.t.circle(10, 180)
? ? ? self.t.fd(20)

? ? # 左側(cè)
? ? self.t.seth(-45)
? ? self.__goto(90 * sqrt(2), 200 - 110 * sqrt(2)) ?
? ? self.t.circle(20,270)
? ? self.__goto(-90 * sqrt(2), 200 - 110 * sqrt(2))
? ? self.t.circle(-20,270)
? ??
? ? # 右側(cè)
? ? self.__goto(80 * sqrt(2), 200 - 120 * sqrt(2))
? ? self.t.circle(40,270)
? ? self.__goto(-80 * sqrt(2), 200 - 120 * sqrt(2))
? ? self.t.circle(-40,270)

5 繪制掛耳和流蘇

def drawAdorn(self):
? ? # 上側(cè)
? ? self.__goto(self.x, self.y)
? ? self.t.pensize(14)
? ? self.t.seth(90)
? ? self.t.fd(60)
? ? self.__goto(0,320)
? ? self.t.seth(180)
? ? self.t.circle(30,360)
? ? # 下側(cè)
? ? self.__goto(0,200 - 200 * sqrt(2))
? ? self.t.pensize(40)
? ? self.t.seth(-90)
? ? self.t.fd(20)
? ? self.t.pensize(2)
? ? for i in range(11):
? ? ? ? self.__goto(-20 + 4 * i, 200 - 200 * sqrt(2))
? ? ? ? self.t.seth(-90)
? ? ? ? self.t.fd(200)

6 完整代碼,一鍵運(yùn)行

import turtle as t
from math import sqrt

class chineseKnot:
? '''
? * @breif: 中國結(jié)
? ''' ?
? def __init__(self) -> None:
? ? # 畫筆初始化
? ? self.t = t
? ? self.t.pensize(10)
? ? self.t.setup(700, 700)
? ? self.t.pencolor("red")
? ? self.t.speed(14)
? ? # 結(jié)心坐標(biāo)
? ? self.x = 0
? ? self.y = 200

? '''
? * @breif: 畫中國結(jié)
? * @param[in]: None
? * @retval: None
? '''
? def drawKnot(self) -> None:
? ? self.drawBody()
? ? self.drawEdge()
? ? self.drawAdorn()
? ? self.t.hideturtle()
? ? self.t.done()

? '''
? * @breif: 畫中國結(jié)主體部分
? * @param[in]: None
? * @retval: None
? '''
? def drawBody(self) -> None:
? ? for i in range(11):
? ? ? ? self.__goto(self.x - i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))
? ? ? ? self.t.seth(-45)
? ? ? ? self.t.fd(200)
? ? ? ? self.__goto(self.x + i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))
? ? ? ? self.t.seth(-135)
? ? ? ? self.t.fd(200)

? '''
? * @breif: 畫中國結(jié)邊緣部分
? * @param[in]: None
? * @retval: None
? ''' ? ? ??
? def drawEdge(self) -> None:
? ? for i in range(4):
? ? ? # 左上角
? ? ? self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),
? ? ? ? ? ? ? ? ? 200 - 10 * sqrt(2) - i * 20 * sqrt(2))
? ? ? self.t.seth(135)
? ? ? self.t.fd(20)
? ? ? self.t.circle(10, 180)
? ? ? self.t.fd(20)

? ? ? # 右上角
? ? ? self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),
? ? ? ? ? ? ? ? ? 200 - 10 * sqrt(2) - i * 20 * sqrt(2))
? ? ? self.t.seth(45)
? ? ? self.t.fd(20)
? ? ? self.t.circle(-10, 180)
? ? ? self.t.fd(20)

? ? ? # 左下角
? ? ? self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),
? ? ? ? ? ? ? ? ? 200 - 190 * sqrt(2) + i * 20 * sqrt(2))
? ? ? self.t.seth(-135)
? ? ? self.t.fd(20)
? ? ? self.t.circle(-10, 180)
? ? ? self.t.fd(20)
? ? ? ?
? ? ? # 右下角
? ? ? self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),
? ? ? ? ? ? ? ? ? 200 - 190 * sqrt(2) + i * 20 * sqrt(2))
? ? ? self.t.seth(-45)
? ? ? self.t.fd(20)
? ? ? self.t.circle(10, 180)
? ? ? self.t.fd(20)

? ? # 左側(cè)
? ? self.t.seth(-45)
? ? self.__goto(90 * sqrt(2), 200 - 110 * sqrt(2)) ?
? ? self.t.circle(20,270)
? ? self.__goto(-90 * sqrt(2), 200 - 110 * sqrt(2))
? ? self.t.circle(-20,270)
? ??
? ? # 右側(cè)
? ? self.__goto(80 * sqrt(2), 200 - 120 * sqrt(2))
? ? self.t.circle(40,270)
? ? self.__goto(-80 * sqrt(2), 200 - 120 * sqrt(2))
? ? self.t.circle(-40,270)

? '''
? * @breif: 畫中國結(jié)裝飾部分
? * @param[in]: None
? * @retval: None
? ''' ?
? def drawAdorn(self):
? ? # 上側(cè)
? ? self.__goto(self.x, self.y)
? ? self.t.pensize(14)
? ? self.t.seth(90)
? ? self.t.fd(60)
? ? self.__goto(0,320)
? ? self.t.seth(180)
? ? self.t.circle(30,360)
? ? # 下側(cè)
? ? self.__goto(0,200 - 200 * sqrt(2))
? ? self.t.pensize(40)
? ? self.t.seth(-90)
? ? self.t.fd(20)
? ? self.t.pensize(2)
? ? for i in range(11):
? ? ? ? self.__goto(-20 + 4 * i, 200 - 200 * sqrt(2))
? ? ? ? self.t.seth(-90)
? ? ? ? self.t.fd(200)

? '''
? * @breif: 畫筆移動到指定位置
? * @param[in]: x -> 畫筆移動位置橫坐標(biāo)
? * @param[in]: y -> 畫筆移動位置縱坐標(biāo)
? * @retval: None
? ''' ?
? def __goto(self, x: int, y: int) -> None:
? ? self.t.penup()
? ? self.t.goto(x,y)
? ? self.t.pendown()
? ? ? ??
if __name__ == '__main__':
? knot = chineseKnot()
? knot.drawKnot()

到此這篇關(guān)于通過Python繪制中國結(jié)的示例代碼的文章就介紹到這了,更多相關(guān)Python繪制中國結(jié)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • echarts動態(tài)獲取Django數(shù)據(jù)的實現(xiàn)示例

    echarts動態(tài)獲取Django數(shù)據(jù)的實現(xiàn)示例

    本文主要介紹了echarts動態(tài)獲取Django數(shù)據(jù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • python基礎(chǔ)學(xué)習(xí)之如何對元組各個元素進(jìn)行命名詳解

    python基礎(chǔ)學(xué)習(xí)之如何對元組各個元素進(jìn)行命名詳解

    python的元祖和列表類似,不同之處在于元祖的元素不能修改,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)學(xué)習(xí)之如何對元組各個元素進(jìn)行命名的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • Python pickle模塊常用方法代碼實例

    Python pickle模塊常用方法代碼實例

    這篇文章主要介紹了Python pickle模塊常用方法代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Python datetime模塊的使用示例

    Python datetime模塊的使用示例

    這篇文章主要介紹了Python datetime模塊的使用示例,幫助大家更好的理解和使用python處理時間,感興趣的朋友可以了解下
    2021-02-02
  • Python爬蟲之Selenium中frame/iframe表單嵌套頁面

    Python爬蟲之Selenium中frame/iframe表單嵌套頁面

    這篇文章主要介紹了Python爬蟲之Selenium中frame/iframe表單嵌套頁面,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python標(biāo)準(zhǔn)庫之多進(jìn)程(multiprocessing包)介紹

    Python標(biāo)準(zhǔn)庫之多進(jìn)程(multiprocessing包)介紹

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫之多進(jìn)程(multiprocessing包)介紹,本文講解了進(jìn)程池、共享資源、共享內(nèi)存、Manager等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • 淺談Python中的數(shù)據(jù)類型

    淺談Python中的數(shù)據(jù)類型

    Python很重要的的那幾個數(shù)據(jù)類型:字符串,列表,字典,元組,經(jīng)常有網(wǎng)友問他們之間重要的區(qū)別的是什么?能否舉幾個例子來說明下!下嘛我們就來探討下。
    2015-05-05
  • Django Paginator分頁器的使用示例

    Django Paginator分頁器的使用示例

    django內(nèi)置的分頁器組件,能夠幫我們實現(xiàn)對查詢的數(shù)據(jù)進(jìn)行自動分頁,并返回分頁對象,本文講解分頁器的用法
    2021-06-06
  • python使用matplotlib畫柱狀圖、散點(diǎn)圖

    python使用matplotlib畫柱狀圖、散點(diǎn)圖

    這篇文章主要為大家詳細(xì)介紹了python使用matplotlib畫柱狀圖、散點(diǎn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python實現(xiàn)PDF頁面的刪除與添加功能

    Python實現(xiàn)PDF頁面的刪除與添加功能

    在處理PDF文檔的過程中,我們時常會需要對PDF文檔中的頁面進(jìn)行編輯操作的情況,如插入和刪除頁面,通過添加和刪除PDF頁面,我們可以增加內(nèi)容或?qū)Σ恍枰膬?nèi)容進(jìn)行刪除,本文將介紹如何使用Python代碼實現(xiàn)在PDF文檔中添加和刪除頁面
    2024-04-04

最新評論

扬中市| 潼关县| 吴旗县| 清涧县| 嵩明县| 吴川市| 尚志市| 淄博市| 东兰县| 昌都县| 和静县| 黄山市| 铜山县| 南靖县| 沂水县| 碌曲县| 海城市| 松原市| 邯郸县| 化隆| 隆昌县| 弥勒县| 连州市| 孝昌县| 辰溪县| 洪泽县| 曲麻莱县| 松阳县| 芜湖县| 松桃| 昂仁县| 五华县| 万盛区| 都安| 黎平县| 铅山县| 永善县| 土默特左旗| 土默特左旗| 边坝县| 尚义县|