2016-08-09 2 views
3

Я пытаюсь нарисовать плиточный равносторонний треугольник, который выглядит как этотКак нарисовать плиточный треугольник с питона черепахой

enter image description here

с помощью черепахи питона. Я хотел бы иметь возможность иметь 16,25,36,49 или 64 треугольника.

Мои первоначальные попытки неуклюжи, потому что я не понял, как аккуратно переместить черепаху из одного треугольника в другой.

Вот это мой (частично правильный) код

def draw_triangle(this_turtle, size,flip):  
    """Draw a triangle by drawing a line and turning through 120 degrees 3 times""" 
    this_turtle.pendown() 
    this_turtle.fill(True) 
    for _ in range(3): 
     if flip: 
      this_turtle.left(120) 
     this_turtle.forward(size) 
     if not flip: 
      this_turtle.right(120) 
    this_turtle.penup() 

myturtle.goto(250,0) 
for i in range(4): 
    for j in range(4): 
     draw_triangle(myturtle, square_size,(j%2 ==0)) 
     # move to start of next triangle 
     myturtle.left(120) 
     #myturtle.forward(square_size) 

    myturtle.goto(-250,(i+1)*square_size) 

Там должны быть элегантный способ сделать это?

ответ

1

Я нашел эту интересную проблему, если ее модифицировали так, чтобы черепаха рисовала фигуру только путем перемещения и без прыжков.

Решение, которое я нашел это некрасиво, но это может стать отправной точкой ...

def n_tri(t, size, n): 
    for k in range(n): 
     for i in range(k-1): 
      t.left(60) 
      t.forward(size) 
      t.left(120) 
      t.forward(size) 
      t.right(180) 
     t.left(60) 
     t.forward(size) 
     t.right(120) 
     t.forward(k * size) 
     t.left(60) 
    t.right(180) 
    t.forward(n * size) 
    t.right(180) 

Вы можете увидеть, как картина выглядит here

+0

Хорошая идея. Я не думал об этом так. – user2175783

Смежные вопросы