如何使用x,y坐标调整图像大小(龟图形)

时间:2015-02-06 23:08:29

标签: python python-3.x turtle-graphics

我在python中通过乌龟创造了一片枫叶。我找到了一种在x轴和y轴上平移形状的方法,但我还没有找到一种方法来调整枫叶的大小,同时保持其原始形状。

import turtle
def MapleLeaf(x=None,y=None):
    if x==None:
        x=0
    if y==None:
        y=0
    turtle.penup()
    turtle.goto(1+x,-3+y)
    turtle.pendown()
    turtle.goto(5+x,-4+y)
    turtle.goto(4+x,-3+y)
    turtle.goto(9+x,1+y)
    turtle.goto(7+x,2+y)
    turtle.goto(8+x,5+y)
    turtle.goto(5+x,4+y)
    turtle.goto(5+x,5+y)
    turtle.goto(3+x,4+y)
    turtle.goto(4+x,9+y)
    turtle.goto(2+x,7+y)
    turtle.goto(0+x,10+y)
    turtle.goto(-2+x,7+y)
    turtle.goto(-4+x,8+y)
    turtle.goto(-3+x,3+y)
    turtle.goto(-5+x,6+y)
    turtle.goto(-5+x,4+y)
    turtle.goto(-8+x,5+y)
    turtle.goto(-7+x,2+y)
    turtle.goto(-9+x,1+y)
    turtle.goto(-4+x,-3+y)
    turtle.goto(-5+x,-4+y)
    turtle.goto(0+x,-3+y)
    turtle.goto(2+x,-7+y)
    turtle.goto(2+x,-6+y)
    turtle.goto(1+x,-3+y)
    turtle.hideturtle()

turtle.pencolor("black")
turtle.fillcolor("red")
turtle.begin_fill()
MapleLeaf(50,50)
turtle.end_fill()
turtle.done()

1 个答案:

答案 0 :(得分:1)

要更改您正在绘制的数字的比例,请将xy位置的所有偏移乘以比例因子:

def MapleLeaf(x=0, y=0, scale=1):
    turtle.penup()
    turtle.goto(1*scale+x,-3*scale+y)
    turtle.pendown()
    turtle.goto(5*scale+x,-4*scale+y)
    turtle.goto(4*scale+x,-3*scale+y)
    turtle.goto(9*scale+x,1*scale+y)
    # ...

请注意,我在开始时删除了if语句,因为您可以使用0作为默认值。它只有可变的默认值(如列表),你需要总是使用像None这样的标记来表示默认值。

由于比例和xy偏移重复得太多,您可能希望将它们进一步分解为函数:

def MapleLeaf(x=0, y=0, scale=1):
    def my_goto(x_offset, y_offset):
        turtle.goto(x + scale*x_offset, y + scale*y_offset)

    turtle.penup()
    my_goto(1, -3)
    turtle.pendown()
    my_goto(5, -4)
    my_goto(4, -3)
    my_goto(9, 1)
    # ...

另一种选择可能是将偏移量放入列表中,并在循环中迭代它们。