python - Python Turtle:是否可以在填充命令中使用图层
问题描述
我最近一直在开发一个用于创建分形图像的软件。但我意识到它要填充需要分层完成的形状,否则它会覆盖部分。这是我当前的代码:
import turtle
def CreatePolygon (turt, Side, Size):
if Size <= 1:
return
else:
#This will create a polygon of a certain size.
#And iterate smaller polygons inside each polygon thus creating a fractal.
for i in range (0, Side):
turt.forward(Size)
turt.left(360/Side)
CreatePolygon(turt, Side, Size/(Side-1))
Size = 250
t = turtle.Turtle()
t.hideturtle()
t.speed(0)
#Calling The Function
CreatePolygon (t, 5, Size)
我的主要目的是让多边形用我理解的不同颜色填充。问题在于填充的多边形在其内部的较大多边形被填充后被覆盖。我不确定如何解决此问题,因为要求是:
- 较小的项目首先被填充(在较大的项目内)。
- 较大的项目第二次填写,而较小的项目填写的地方没有填写。
解决方案
我们在 Python turtle 中没有图层,但我们仍然可以通过一些重复和重新排列代码来实现您想要的效果:
from turtle import Screen, Turtle
COLORS = ['red', 'green', 'blue', 'magenta', 'yellow', 'cyan']
def CreatePolygon(turt, sides, size, color=0):
if size <= 1:
return
# This will create a polygon of a certain size.
turt.fillcolor(COLORS[color])
turt.begin_fill()
for _ in range(sides):
turt.forward(size)
turt.left(360 / sides)
turt.end_fill()
# And iterate smaller polygons inside each polygon thus creating a fractal.
for _ in range(sides):
turt.forward(size)
turt.left(360 / sides)
CreatePolygon(turt, sides, size / (sides - 1), color + 1)
screen = Screen()
turtle = Turtle(visible=False)
# Calling The Function
screen.tracer(False)
CreatePolygon(turtle, 5, 250)
screen.tracer(True)
screen.exitonclick()
我们必须先绘制较大的多边形,填充它,然后递归地绘制较小的多边形。
推荐阅读
- codeigniter-3 - 单击codeigniter中的其他页面时css和js文件路径更改
- javascript - 如何在 React 中根据屏幕大小将信息(链接)推送到“...”中显示更多弹出框
- c# - 从导致问题的各种脚本中引用
- node.js - Electron / Mongoose / MongoDB Cast 错误:“错误:有效负载验证失败:video_buffer:Cast to Buffer 值“Uint8Array..”
- computer-science - 如何更正我的代码以生成具有随机值的网格?
- vuejs2 - vue2中vuetify的v-dialog如何在容器中使用monaco-editor?
- html - 标签在 HTML、CSS 中悬停时有点振动
- flutter - 我在哪里可以获得“private_key_id”和“private_key”?
- flutter - 颤振谷歌驱动上传
- r - 在闪亮的应用程序中单击事件后存储工具提示信息