亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

通過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 完整代碼,一鍵運行

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)文章

  • python 獲取計算機(jī)的網(wǎng)卡信息

    python 獲取計算機(jī)的網(wǎng)卡信息

    這篇文章主要介紹了python 獲取計算機(jī)的網(wǎng)卡信息的方法,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2021-02-02
  • 通過Python 獲取Android設(shè)備信息的輕量級框架

    通過Python 獲取Android設(shè)備信息的輕量級框架

    今天跟大家分享一下,如何通過Python實現(xiàn)一個輕量級的庫來獲取電腦上連接的Android設(shè)備信息,需要的朋友參考下吧
    2017-12-12
  • Python實現(xiàn)比較撲克牌大小程序代碼示例

    Python實現(xiàn)比較撲克牌大小程序代碼示例

    這篇文章主要介紹了Python實現(xiàn)比較撲克牌大小程序代碼示例,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • 基于Python制作簡單的音樂播放器

    基于Python制作簡單的音樂播放器

    這篇文章主要為大家詳細(xì)介紹了如何基于Python制作簡單的音樂播放器,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以了解下
    2024-02-02
  • python判斷文件夾內(nèi)是否存在指定后綴文件的實例

    python判斷文件夾內(nèi)是否存在指定后綴文件的實例

    今天小編就為大家分享一篇python判斷文件夾內(nèi)是否存在指定后綴文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • pycharm中下載的包但是import還是無法使用/報紅的解決方法

    pycharm中下載的包但是import還是無法使用/報紅的解決方法

    用pycharm開發(fā)時,在導(dǎo)入自己寫的python文件時出現(xiàn)模塊名爆紅的情況,下面這篇文章主要給大家介紹了關(guān)于pycharm中下載包但是import還是無法使用/報紅的解決方法,需要的朋友可以參考下
    2023-02-02
  • python中urlparse模塊介紹與使用示例

    python中urlparse模塊介紹與使用示例

    這篇文章主要給大家介紹了關(guān)于python中urlparse模塊介紹與使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Python面向?qū)ο缶幊讨庋b的藝術(shù)你了解嗎

    Python面向?qū)ο缶幊讨庋b的藝術(shù)你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Python面向?qū)ο缶幊讨庋b的藝術(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python 高效編程技巧分享

    Python 高效編程技巧分享

    工作中經(jīng)常要處理各種各樣的數(shù)據(jù),遇到項目趕進(jìn)度的時候自己寫函數(shù)容易浪費時間。Python 中有很多內(nèi)置函數(shù)幫你提高工作效率。
    2020-09-09
  • 詳解Python程序與服務(wù)器連接的WSGI接口

    詳解Python程序與服務(wù)器連接的WSGI接口

    這篇文章主要介紹了Python程序與服務(wù)器連接的WSGI接口,是Python網(wǎng)絡(luò)編程學(xué)習(xí)當(dāng)中的重要內(nèi)容,需要的朋友可以參考下
    2015-04-04

最新評論