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

通過Python繪制中國結的示例代碼

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

1 中國結的組成部分

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

2 設計中國結對象

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

import turtle as t

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

3 繪制結體

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)

? ? # 左側
? ? 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)
? ??
? ? # 右側
? ? 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):
? ? # 上側
? ? 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)
? ? # 下側
? ? 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: 中國結
? ''' ?
? def __init__(self) -> None:
? ? # 畫筆初始化
? ? self.t = t
? ? self.t.pensize(10)
? ? self.t.setup(700, 700)
? ? self.t.pencolor("red")
? ? self.t.speed(14)
? ? # 結心坐標
? ? self.x = 0
? ? self.y = 200

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

? '''
? * @breif: 畫中國結主體部分
? * @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: 畫中國結邊緣部分
? * @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)

? ? # 左側
? ? 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)
? ??
? ? # 右側
? ? 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: 畫中國結裝飾部分
? * @param[in]: None
? * @retval: None
? ''' ?
? def drawAdorn(self):
? ? # 上側
? ? 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)
? ? # 下側
? ? 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 -> 畫筆移動位置橫坐標
? * @param[in]: y -> 畫筆移動位置縱坐標
? * @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()

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

相關文章

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

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

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

    python基礎學習之如何對元組各個元素進行命名詳解

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

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

    這篇文章主要介紹了Python pickle模塊常用方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    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表單嵌套頁面,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Python標準庫之多進程(multiprocessing包)介紹

    Python標準庫之多進程(multiprocessing包)介紹

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

    淺談Python中的數據類型

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

    Django Paginator分頁器的使用示例

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

    python使用matplotlib畫柱狀圖、散點圖

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

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

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

最新評論

汾阳市| 灵山县| 方山县| 靖远县| 介休市| 桑日县| 西安市| 凤凰县| 九龙城区| 无为县| 昭觉县| 抚州市| 和平区| 依兰县| 铁岭县| 抚松县| 株洲市| 苏尼特左旗| 阿巴嘎旗| 太康县| 子长县| 六盘水市| 准格尔旗| 剑阁县| 伊宁市| 贡嘎县| 磴口县| 祁连县| 宾川县| 榆树市| 象州县| 台北县| 和龙市| 松原市| 永德县| 井冈山市| 北辰区| 星子县| 冕宁县| 广元市| 屏东市|