如何修改此python代码?

时间:2014-11-17 05:44:18

标签: python geometry size draw

这个python代码绘制了一个sierpinski三角形。首先绘制主三角形,然后绘制一堆较小的字符

import turtle

def drawTriangle(points,color,myTurtle):
    myTurtle.fillcolor(color)
    myTurtle.up()
    myTurtle.goto(points[0][0],points[0][1])
    myTurtle.down()
    myTurtle.begin_fill()
    myTurtle.goto(points[1][0],points[1][1])
    myTurtle.goto(points[2][0],points[2][1])
    myTurtle.goto(points[0][0],points[0][1])
    myTurtle.end_fill()

def getMid(p1,p2):
    return ( (p1[0]+p2[0]) / 2, (p1[1] + p2[1]) / 2)

def sierpinski(points,degree,myTurtle):
    colormap = ['red','turquoise','green','purple','Antique White 4',
                'white','black']
    drawTriangle(points,colormap[degree],myTurtle)
    if degree > 0:
        sierpinski([points[0],
                        getMid(points[0], points[1]),
                        getMid(points[0], points[2])],
                   degree-1, myTurtle)
        sierpinski([points[1],
                        getMid(points[0], points[1]),
                        getMid(points[1], points[2])],
                   degree-1, myTurtle)
        sierpinski([points[2],
                        getMid(points[2], points[1]),
                        getMid(points[0], points[2])],
                   degree-1, myTurtle)

def main():
   myTurtle = turtle.Turtle()
   myWin = turtle.Screen()
   myPoints = [[-100,-50],[0,100],[100,-50]]
   sierpinski(myPoints,3,myTurtle)
   myWin.exitonclick()

main()

我想要做的是修改我的代码,使整个三角形更大。我只是不确定为了改变大小我必须改变什么。

2 个答案:

答案 0 :(得分:2)

在main()方法中尝试myPoints变量。它设置为

myPoints = [[-100,-50],[0,100],[100,-50]]

可能会改为

myPoints = [[-200, -100],[0,200],[200,-100]]

或类似的东西。我没有运行它,但我很确定这些值决定了你的三角形的大小。

答案 1 :(得分:2)

main方法中,您需要更改myPoints的值。此列表列表作为第二个参数传递给sierpinski()。例如,如下定义myPoints使得三角形的大小是代码中的两倍:

myPoints = [[-200, -50], [0, 200], [200, -50]]
sierpinski(myPoints, 2, myTurtle)

myPoints列表中的三个列表中的每一个都表示三角形的任何给定点距离屏幕中心的距离。对于上面的myPoints,三角形的点绘制如下:

  1. 中心左侧(-X)200像素,中心
  2. 下方50像素(-Y)
  3. 中心上方200像素
  4. 中心右侧200像素,中心下方50像素
  5. 如果你愿意,你也可以修改它,使三角形不再是等边的 - 你可以用[[-200, -50], [0, 250], [200, -50]]创建一个等边三角形,或者用[[-200, -50], [0, 50], [150, -50]]创建一个斜角三角形。尝试加载不同的值,看看会发生什么!