功能要求
在平面上給定三個點的坐标,根據三個點繪制出一個三角形。
實例代碼
import turtle
'''
指定平面上的三個點繪制并填充三角形
points列表參數保存三角形三個點的坐标
color參數三角形的填充顔色
'''
def drawTriangle(points, color):
turtle.color(color)
# 設置畫筆的起點為points[0]
turtle.penup()
turtle.goto(points[0])
turtle.pendown()
turtle.begin_fill()
turtle.goto(points[1]) # 走到points[1]
turtle.goto(points[2]) # 走到points[2]
turtle.goto(points[0]) # 回到points[0],完成三角形的繪制
turtle.end_fill()
p = [[-200, -100], [0, 200], [200, -100]]
# 三角形三個頂點分别為(-200, -100)、(0, 200)、(200, -100)
drawTriangle(p, "orange") # 三角形填充orange顔色
turtle.done()
運行結果
繪制謝爾賓斯基三角形
功能要求
謝爾賓斯基三角形(英語:Sierpinski triangle)是一種分形,由波蘭數學家謝爾賓斯基在1915年提出。它是自相似集的例子。它的豪斯多夫維是log(3)/log(2) ≈ 1.585。謝爾賓斯基三角形的構造方法。
1.取一個實心的三角形。(多數使用等邊三角形)
2.沿三邊中點的連線,将它分成四個小三角形。
3.去掉中間的那一個小三角形。
4.對其餘三個小三角形重複1。
取一個正方形或其他形狀開始,用類似的方法構作,形狀也會和謝爾賓斯基三角形相近。
修改drawTriangle()方法,根據指定的層次,遞歸調用drawTriangle()方法,修改三角形的三個定點繪制出最終的謝爾賓斯基三角形。
實例代碼
import turtle
turtle.speed(0) # 設置畫筆的速度
turtle.hideturtle() # 隐藏畫筆
'''
獲得兩個點的中間點
point1和point2參數表示兩個點的坐标
'''
def getMidPoint(point1, point2):
return (point1[0] point2[0]) / 2, (point1[1] point2[1]) / 2
'''
根據最初的三角形的單個點繪制謝爾賓斯基三角形
points參數:保存三角形的三個定點坐标的集合
degree參數:謝爾賓斯基三角形的層次
'''
def drawTriangle(points, degree):
colors = ['red', 'green', 'blue', 'pink', 'violet', 'orange', 'yellow']
# 定義謝爾賓斯基三角形各層的顔色
turtle.color(colors[degree % len(colors)]) # 根據層次獲取這一層填充的顔色
# 設置points[0]為開始繪制三角形的起點
turtle.penup()
turtle.goto(points[0])
turtle.pendown()
turtle.begin_fill()
turtle.goto(points[1]) # 走到points[1]
turtle.goto(points[2]) # 走到points[2]
turtle.goto(points[0]) # 回到points[0],完成三角形的繪制
turtle.end_fill()
if degree > 0: # 判斷degree是否大于0,是大于則遞歸調用drawTriangle,重新設置三角形的定點,degree-1
drawTriangle([points[0], getMidPoint(points[0], points[1]), getMidPoint(points[0], points[2])], degree - 1)
drawTriangle([points[1], getMidPoint(points[0], points[1]), getMidPoint(points[1], points[2])], degree - 1)
drawTriangle([points[2], getMidPoint(points[0], points[2]), getMidPoint(points[1], points[2])], degree - 1)
p = [[-200, -100], [0, 200], [200, -100]]
# 繪制謝爾賓斯基三角形的起始三個坐标點
drawTriangle(p, 5) # 根據起始的三個坐标點,繪制深度為5的謝爾賓斯基三角形
turtle.done()
運行結果
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!