Здесь я расскажу, как при помощи математических формул нарисовать
красивую звездочку к 23 февраля. В конце записи вы найдете математическую
открытку к 8 Марта.
Сразу оговорюсь, что звезду можно нарисовать, соединив вершины правильного пятиугольника через одну (статья на Википедии), но мне хотелось бы получить простую аналитическую формулу, которую можно записать в одну строчку.
Будем использовать полярные координаты
:
— длина радиус-вектора,
— ориентированный угол между осью Ox и радиус-вектором.
Сначала нарисуем вот такую звездочку, а потом повернем ее на 90° против часовой стрелки.

Нам понадобится полярное уравнение прямой. Чтобы получить это уравнение, сначала запишем нормальное уравнение прямой:

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

Для того чтобы задать звезду в полярных координатах, разделим множество полярных углов
(или, если хотите, единичную окружность) на 10 равных частей и на каждом промежутке
зададим прямую со своими параметрами
и
. Заметим, что в силу симметрии звезды параметр
будет один и тот же для всех прямых (для всех
).
Посмотрите на картинку в самом начале записи. Последняя формула — это итоговое уравнение звезды, связывающее полярные координаты
и
. Это уравнение получается из уравнения
преобразованием поворота звезды на угол
против часовой стрелки.
— это кусочно-постоянная функция, определяющая угол наклона прямой на каждом промежутке полярных углов.

Найдем параметры
и
на промежутке
(участок А на рисунке).
На рисунке
— половина угла луча звезды,
— вектор нормали к прямой.
Для данного промежутка
, параметр
находим из полярного уравнения прямой для
:
. Здесь
— расстояние от начала координат до вершины звезды.
Как было сказано выше, для всех участков параметр
один и тот же, мы его уже нашли. Для участка Б параметр
будет противоположный:
.
Теперь нам остается найти значения параметра
для остальных лучей звезды. Пронумеруем их: для рассмотренного луча звезды при
порядковый номер
. Порядковому номеру
соответствует промежуток
.
Очевидно, что при переходе от луча звезды к следующему к параметру
прибавляется
. Следовательно, для луча с номером
имеем
(*).
Для заданного
номер луча можно найти из неравенства
. Получим
.
Каждый луч звезды состоит из двух отрезков: на промежутке
в формуле (*) для
нужно взять знак «минус», а для промежутка
— знак «плюс».
Знак можно записать следующим образом:
.
Вот, собственно, и всё. Определив функции
и
(см. картинку в самом начале), можно записать выражение для функции
. А уже эта функция входит в полярное уравнение прямой.
Параметр
(половина угла луча звезды) можно варьировать. Приведенная в начале звезда соответствует значению
. При
получаем звездочку, похожую на морскую звезду:

При
получаем остроконечную звезду:

Чтобы нарисовать звезду в Wolfram Mathematica, можно использовать следующий код:
В заключение приведу математическую открытку к 8 Марта.
Эта кривая — не что иное, как перевернутая лемниската Бернулли.

Сразу оговорюсь, что звезду можно нарисовать, соединив вершины правильного пятиугольника через одну (статья на Википедии), но мне хотелось бы получить простую аналитическую формулу, которую можно записать в одну строчку.
Будем использовать полярные координаты
Сначала нарисуем вот такую звездочку, а потом повернем ее на 90° против часовой стрелки.
Нам понадобится полярное уравнение прямой. Чтобы получить это уравнение, сначала запишем нормальное уравнение прямой:
Здесь
Подставляя в нормальное уравнение выражение декартовых координат через полярные
Для того чтобы задать звезду в полярных координатах, разделим множество полярных углов
Посмотрите на картинку в самом начале записи. Последняя формула — это итоговое уравнение звезды, связывающее полярные координаты
Найдем параметры
На рисунке
Для данного промежутка
Как было сказано выше, для всех участков параметр
Теперь нам остается найти значения параметра
Очевидно, что при переходе от луча звезды к следующему к параметру
Для заданного
Каждый луч звезды состоит из двух отрезков: на промежутке
Знак можно записать следующим образом:
Вот, собственно, и всё. Определив функции
Параметр
При
Чтобы нарисовать звезду в Wolfram Mathematica, можно использовать следующий код:
gamma = Pi/10;
rho = 1;
p = rho*Sin[gamma];
k[phi_] := Floor[(phi + 0.2*Pi)/(0.4*Pi)];
s[phi_] := Sign[phi - 0.4*k[phi]*Pi];
alpha[phi_] := s[phi]*(Pi/2 - gamma) + 0.4*k[phi]*Pi;
PolarPlot[p/Cos[phi - Pi/2 - alpha[phi - Pi/2]],
{phi, 0, 2*Pi}, PlotStyle -> Directive[Red, Thickness[0.01]]]
В заключение приведу математическую открытку к 8 Марта.
Эта кривая — не что иное, как перевернутая лемниската Бернулли.
Дополнение от Владимира Духно, 29.06.2014:
При

Можно обобщить формулу звезды на случай произвольного числа вершин.
Исходный код:
n = 11;
rho = 1;
gamma = Pi/20;
p = rho*Sin[gamma];
beta = 2*Pi/n;
v[phi_] := phi + 3*Pi/2;
k[phi_] := 2*FractionalPart[1/2*IntegerPart[2*v[phi]/beta]];
u[phi_] := v[phi] - beta*IntegerPart[v[phi]/beta];
s[phi_] := Sign[u[phi] - beta/2];
r[phi_] := p/Cos[Pi/2 - gamma - beta*k[phi] + s[phi]*u[phi]];
PolarPlot[r[phi], {phi, 0, 2*Pi},
PlotStyle -> Directive[Orange, Thickness[0.01]]]
Комментарии
Отправить комментарий