Правильные многоугольники
Универсальная процедура для рисования правильных многоугольников -- от треугольника до десятиугольника. Программа показывает, как одна и та же процедура может рисовать фигуры с разным числом сторон.
Разбор
Вызов процедуры для разных фигур
использовать Чертежник
алг
нач
| Треугольник
выбрать чернила(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
Параметры процедуры:
n-- количество сторон (вершин)cx,cy-- координаты центра фигурыr-- радиус описанной окружности (расстояние от центра до каждой вершины)
Вычисление вершин
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)
кц
кон