Рубрики
Без рубрики

Обычный звездный многоугольник с питоном черепахой

Если вы дудлер, вы наверняка набрали пентаграмму или звезду Давида в какой -то момент … Tagged с питоном, черепахой, учебником, рисунком.

Рисунок с черепахой (серия 6 деталей)

Если вы дудлер, вы наверняка рисовали пентаграмму или звезду Давида в какой -то момент своей жизни.

Может быть, некоторые из вас также пытались добавить больше линий, чтобы нарисовать еще более сложные звезды. Вы знали, что у этих звезд тоже были имена?

В любом случае, я подумал, что было бы весело попробовать рисовать эти звезды с помощью Python. Итак, давайте начнем рисовать эти полигоны

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

Звездный многоугольник – это тип сложного многоугольника. И есть два типа. Должно быть, вы поняли, что для того, чтобы нарисовать звезду Давида на листе бумаги, вы должны поднять ручку, но вам не нужно делать это, чтобы нарисовать пентаграмму. Бывший тип звезд называется Обычные звездные многоугольники тогда как последний тип называется вырожденные звездные многоугольники

Как вы могли заметить выше, мы можем нарисовать звезду с определенным количеством вершин несколькими способами. Например, вы можете нарисовать звездный многоугольник с 9 вершинами следующим образом:

1 Вершина пропустила 2 вершины пропустили 3 пропущенные вершины

Чтобы понять, что происходит, подсчитайте количество вершин, пропущенных на каждой из вышеперечисленных диаграмм. Также обратите внимание, что когда 2 вершины пропускаются, звезда вырождается, тогда как в других случаях звезда регулярно. Вы можете попытаться пропустить больше вершин, но в конечном итоге вы будете рисовать одни и те же звезды.

Вот правила и формулы, которые будут полезны для нас

  1. Для звезды с N Вершины вы можете нарисовать ABS (N/2) -1 звезда

    Например, для звезды с 9 вершинами вы можете только рисовать ABS (9/2) -1 = 3 звезда

  2. Порядок звезды M можно определить как количество пропущенных вершин +1 .

    Таким образом, возможные заказы для 9-вершисной звезды составляют 2, 3 и 4 для 1, 2 и 3, пропущенных соответственно.

  3. Если N делится на M , звезда вырождена

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

  • Когда черепаха начинается в точке, проходит вокруг, затем возвращается, 360 градусов всегда поворачиваются в одном полном вращении (также причина, по которой сумма внешних углов градусов)
  • В случае звезды, черепаха выполняет несколько полных вращений
  • Количество вращений равно порядку звезды – М
  • Следовательно, сумма внешних углов звезды – это 360*м
  • Что означает, что для обычной звезды с N Вершины каждый угол наружного угла = 360*M/N

Надеяться Это достаточно убедительно

Теперь, когда мы понимаем наш любимый рисунок, мы готовы кодировать его в Python Turtle. Обратите внимание, что угол поворота устанавливается на то, что мы только что обсудили

import turtle as t

LENGTH=500

def regular_star(n,m):
    """Draws a regular star polygon (not a degenerate one)
       n = number of pointies
       m = number of points to skip
    """

    angle = 360*m/n 

    for count in range(n):
       t.forward(LENGTH)
       t.right(angle)


t.hideturtle()
t.pensize(2)
t.color("green")

regular_star(103,51)

Приведенный выше код рисует только любые обычные звездные многоугольники (тот, который можно нарисовать без подъема ручки). Мы оставим это на другой пост, чтобы нарисовать вырожденную звезду

Вот звезда 103.

Ура!

Рисунок с черепахой (серия 6 деталей)

Оригинал: “https://dev.to/taarimalta/regular-star-polygon-with-python-turtle-k37”