📖 Документация Qumir

← Вернуться в Playground

← Все примеры

Правильные многоугольники

Универсальная процедура для рисования правильных многоугольников -- от треугольника до десятиугольника. Программа показывает, как одна и та же процедура может рисовать фигуры с разным числом сторон.

Разбор

Вызов процедуры для разных фигур

использовать Чертежник

алг
нач
    | Треугольник
    выбрать чернила(4)  | красный
    многоугольник(3, -4.0, 0.0, 1.5)

    | Квадрат
    выбрать чернила(1)  | синий
    многоугольник(4, 0.0, 0.0, 1.5)

    | Пятиугольник
    выбрать чернила(2)  | зеленый
    многоугольник(5, 4.0, 0.0, 1.5)

Главный алгоритм вызывает одну и ту же процедуру многоугольник с разными параметрами. Перед каждым вызовом задаётся цвет линии командой выбрать чернила. Первый аргумент -- количество сторон, далее координаты центра и радиус.

Аналогично рисуются ещё три фигуры во втором ряду:

    | Шестиугольник
    выбрать чернила(5)  | пурпурный
    многоугольник(6, -4.0, -4.0, 1.5)

    | Восьмиугольник
    выбрать чернила(3)  | голубой
    многоугольник(8, 0.0, -4.0, 1.5)

    | Десятиугольник
    выбрать чернила(6)  | желтый
    многоугольник(10, 4.0, -4.0, 1.2)
кон

С увеличением числа сторон многоугольник всё больше приближается к окружности.

Процедура многоугольник

алг многоугольник(цел n, вещ cx, вещ cy, вещ r)
нач
    цел i
    вещ angle, x, y
    вещ startX, startY

Параметры процедуры:

Вычисление вершин

    angle := 0.0
    x := cx + r * cos(angle)
    y := cy + r * sin(angle)
    startX := x
    startY := y

    поднять перо
    сместиться в точку(x, y)
    опустить перо

    нц для i от 1 до n
        angle := 2.0 * 3.14159 * i / n
        x := cx + r * cos(angle)
        y := cy + r * sin(angle)
        сместиться в точку(x, y)
    кц
кон

Вершины правильного $n$-угольника равномерно расположены на окружности радиуса $r$. Угол $i$-й вершины вычисляется по формуле:

$\alpha_i = \frac{2\pi \cdot i}{n}$

Затем полярные координаты переводятся в декартовы:

$x_i = cx + r \cdot \cos(\alpha_i), \quad y_i = cy + r \cdot \sin(\alpha_i)$

Перо поднимается для перемещения к первой вершине, затем опускается. Цикл проходит по всем $n$ вершинам, замыкая фигуру (последняя вершина при $i = n$ совпадает с первой, так как $\cos(2\pi) = \cos(0)$).

Полная программа

| Рисование правильных многоугольников
использовать Чертежник

алг
нач
    | Треугольник
    выбрать чернила(4)  | красный
    многоугольник(3, -4.0, 0.0, 1.5)

    | Квадрат
    выбрать чернила(1)  | синий
    многоугольник(4, 0.0, 0.0, 1.5)

    | Пятиугольник
    выбрать чернила(2)  | зеленый
    многоугольник(5, 4.0, 0.0, 1.5)

    | Шестиугольник
    выбрать чернила(5)  | пурпурный
    многоугольник(6, -4.0, -4.0, 1.5)

    | Восьмиугольник
    выбрать чернила(3)  | голубой
    многоугольник(8, 0.0, -4.0, 1.5)

    | Десятиугольник
    выбрать чернила(6)  | желтый
    многоугольник(10, 4.0, -4.0, 1.2)
кон

| Рисует правильный n-угольник с центром в (cx, cy) и радиусом r
алг многоугольник(цел n, вещ cx, вещ cy, вещ r)
нач
    цел i
    вещ angle, x, y
    вещ startX, startY

    | Вычисляем первую точку
    angle := 0.0
    x := cx + r * cos(angle)
    y := cy + r * sin(angle)
    startX := x
    startY := y

    | Переходим в начальную точку
    поднять перо
    сместиться в точку(x, y)
    опустить перо

    | Рисуем стороны многоугольника
    нц для i от 1 до n
        angle := 2.0 * 3.14159 * i / n
        x := cx + r * cos(angle)
        y := cy + r * sin(angle)
        сместиться в точку(x, y)
    кц
кон

▶ Запустить пример