Фигуры на turtle

TURTLE

Надо сделать вот такие фигуры:

введите сюда описание изображения

Их параметры:

Размеры крышек коробок:

  • Треугольную крышку следует сделать со стороной 70.
  • Квадратную крышку следует сделать со стороной 60.
  • Пятиугольную крышку следует сделать со стороной 50.
  • Шестиугольную крышку следует сделать со стороной 40.
  • Семиугольную крышку следует сделать со стороной 45.

Код который есть:

from turtle import *

pensize(3)
# Функция для вырезания равносторонней фигуры. Помогает вырезать крышки коробок
def box_top(size, sides):
    pendown()
    begin_fill()
    color("black")
    for k in range(sides):
        forward(size)
        left(360/sides)
    color("green")
    end_fill()
    penup()

penup()

# Требуется вырезать пять фигур. 
# Ниже допишите программу так, чтобы получить схему из пяти вариантов как в задании. 
goto(-100,-50)
box_top(50, 9)

# это важная функция, её не удаляй!
exitonclick()

Ответы (1 шт):

Автор решения: Zhihar

ужас, куда мы катимся :(

итак, в задаче надо нарисовать равносторонние треугольник, прямоугольник (он же квадрат), пятиугольник, шестиугольник и 7-угольник

в приведенном коде, если не полениться и запустить его, рисуется 9-угольник

т.е. функция box_top(size, sides) при вызове

box_top(50, 9)

рисует 9-угольник

подозрительно

интересно, а если вызвать

box_top(100, 3)

она нарисует треугольник со стороной 100?

учитывая что фигура рисоваться начинается с левого нижнего угла (который задается внешним goto), то

goto(-100,-50)
box_top(50, 3)

goto(-50,-50)
box_top(100, 4)

возможно нарисует впритирку треугольник и квадрат?

Теперь если понятно что поставить начальную координату можно через внешний goto(x0, y0), то как расположить фигурки относительно друг друга?

что нужно знать

  1. длину стороны
  2. угол между сторонами - 360 / кол_во сторон
  3. синусы/косинусы

ну и дальше математика 7 класса

например для 6-угольникв

y0_шестиугольник = y0_квадрат
x0_шестиугольник = x0_квадрат + сторона квадрата + сторона шестиугольника * cos(360 / 6)
→ Ссылка