【发布时间】:2020-05-13 01:29:08
【问题描述】:
我正在尝试使用 ezgraphics 库使用递归创建谢尔宾斯基三角形。我想有几件事我做错了,但我被困住了,因为我对编码还比较陌生。我不是在找人来为我完成代码,只是关于下一步要尝试什么的建议。
这是我正在使用的库:http://www.ezgraphics.org/ReferenceGuide/ReferenceGuide
到目前为止,这是我的粗略代码:
from ezgraphics import GraphicsWindow
def main():
winSpec = int(input("enter the size of the window: "))
subDiv = int(input("Enter number of subdivisions: "))
win = GraphicsWindow(winSize,winSize)
canvas = win.canvas()
canvas.setColor( "blue" )
triangle1 = [winSpec/2, 0, 0, winSpec, winSpec, winSpec]
drawGasket(triangle1,subDiv,canvas)
#canvas.drawPolygon(triangle1[0],triangle1[1],triangle1[2],triangle1[3],triangle1[4],triangle1[5])
win.wait()
def drawGasket(points,subDiv,canvas):
print(points)
canvas.drawPolygon(points[0],points[1],points[2],points[3],points[4],points[5])
if subDiv > 0:
print("hi")
points2 = [points[0] + points[2] /2,points[1] + points[3] /2, points[0] + points[4] /2,points[1] + points[5] /2, points[2] + points[4] /2,points[3] + points[5] /2]
drawGasket(points2, subDiv - 1, canvas)
【问题讨论】:
-
欢迎来到 SO!你能更具体地说明你被困在什么地方吗?请稍微介绍一下代码和您的思考过程。
-
不要指望我们会运行代码来查看您的问题。并且代码可以在我们的计算机上正常工作。你必须描述你得到什么和你想得到什么。如果您收到错误消息,则将完整错误(不在评论中)作为文本(不是图像)提出
-
顺便说一句:更短的
canvas.drawPolygon(points) -
对不起,我不是很具体,我目前在代码运行时没有遇到任何错误,而是我被困在如何使绘制的三角形遵循谢尔宾斯基三角形的模式应该的。例如,我的程序当前在画布的边界框之外绘制了第二个、第三个等三角形,而不是我认为它要去的地方。这是一个picture 供参考,画布变得更大以适应超出范围的三角形。
-
我记得
Sierpinski triangle你应该只为subDiv == 0绘制三角形,对于其他值你应该找到三个较小的三角形并运行drawGasket三次与较小的三角形drawGasket(smaller_triangel1, subDiv - 1, canvas),drawGasket(smaller_triangel2, subDiv - 1, canvas),drawGasket(smaller_triangel3, subDiv - 1, canvas)
标签: python recursion canvas draw