Вопрос о формуле для многоугольника в полярных координатах регулярно возникает на тематических ресурсах — и так же регулярно остаётся без внятного ответа. В лучшем случае попадается решение через функцию остатка от деления — что не является «чистым» с математической точки зрения, поскольку не позволяет производить над функцией аналитические преобразования. Видимо, настоящие математики слишком заняты решением проблем тысячелетия и поисками простого доказательства теоремы Ферма, чтобы обращать внимание на подобные банальные задачи. К счастью, в этом вопросе воображение важнее знания, и для решения этой задачи не нужно быть профессором топологических наук — достаточно знания школьного уровня.

Формула для равностороннего многоугольника в полярных координатах выглядит очень просто
и имеет следующие параметры:
— угол;
— количество выпуклых вершин;
— определяет, через какое количество вершин стороны будут лежать на одной прямой. Для него допустимы и отрицательные значения — от знака будет зависеть, в какую сторону будет выгибаться звезда;
— жёсткость — при
мы получим окружность вне зависимости от прочих параметров, при
— многоугольник с прямыми линиями, при промежуточных значениях от
до
— промежуточные фигуры между окружностью и многоугольником.
С этой формулой можно нарисовать звезду двумя путями:
1)

2)
. В этом случае требуется сделать два оборота вместо одного:

Параметр
влияет на многоугольник следующим образом (здесь он изменяется от -1 до 5):

Параметр
в анимации:

Можно переписать исходную формулу в комплексном виде, и, несмотря на наличие в ней мнимых единиц, значение радиуса по-прежнему будет оставаться действительным:
На первый взгляд это может показаться бессмысленным, поскольку формула стала чуть более громоздкой — но не стоит спешить с выводами. Во-первых, в ней отсутствует арксинус, что полностью меняет математический смысл формулы и позволяет по-другому посмотреть на построение звёздчатого многоугольника. Во-вторых, из неё также можно получить компактные формулы для частных случаев, например
. В-третьих (и самое интересное), её можно творчески модифицировать и получать другие, неожиданные формы. Для того, чтобы появление возможной мнимой компоненты в радиусе не вызывало неоднозначности при вычислении, можно её сразу привести к декартовым координатам умножением на
. Вот примеры некоторых модификаций:



Как вы наверняка заметили, вращение вектора перестало быть равномерным — и именно из-за появления мнимой составляющей в радиусе.
У нашей формулы есть замечательный частный случай — квадрат, формулу для которого можно выписать как
или
(выбирайте, какая больше нравится).
В чуть более развёрнутом случае можно определить промежуточные фигуры между кругом и квадратом через точку
на плоскости

Можно также добавить вариативности этим фигурам с сохранением условия прохождения их через точку
— модулируя непосредственно сам параметр
в зависимости от угла таким образом, чтобы при прохождении через диагонали его множитель был равен единице. Например, подставив вместо
функцию
, мы получим дополнительный параметр
, которым можно регулировать дополнительные изгибы. В частности, для
получится следующее:

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

А здесь площадь расширяется по экспоненциальному закону:

Любую формулу в полярных координатах можно выразить через уравнение в декартовых координатах, причём как минимум двумя способами — в зависимости от чего будет изменяться вид градиента на границе фигуры. Для этого достаточно посчитать угол через арктангенс от координат и привести формулу к константе через радиус-вектор вычитанием
или делением
Второй вариант предпочтительнее, поскольку даёт прямые градиенты вдоль сторон многоугольника.
Значение формулы из правой части уравнения (во 2-м случае) будет меняться от
до
если точка
попадает внутрь фигуры, и от
до бесконечности — если нет. Выбирая различные функции для преобразования её в яркость, можно получать различные варианты растеризации. Для экспоненты (
для первого и
для второго варианта) получим
или, если с насыщением
Можно использовать классический фильтр нижних частот
, в котором
— порядок фильтра, определяющий степень затухания.
Для первого варианта:
И для второго:
Можно использовать и кусочно-непрерывную функцию, явно задавая границы интерполяции.
Помимо растеризации как таковой, можно задавать и деформации — например, сжать шахматную доску в круг:

Или даже натянуть её на сферу:

Классический стиль повествования в математических текстах состоит из чередования лемм/теорем и их доказательств — как если бы доказуемые утверждения появлялись у авторов в голове откровением свыше. И хотя в этом и бывает доля истины, чаще появлению формул предшествует некоторая исследовательская работа, описание которой может дать большее понимание их смысла, чем формальное доказательство; а верность утверждений, в свою очередь, можно проследить через верность шагов, к ним приведших.
Так и здесь — если бы статья началась с формулы в комплексной форме, то её появление было бы неочевидным и контр-интуитивным, а заявленные свойства требовали бы дополнительных доказательств. Но в тригонометрической форме записи историю её появления вполне возможно проследить.
1) начинаем с самого простого случая — задаче начертить прямую в полярных координатах. Для этого нужно решить уравнение
, решение которого очевидно
.

2) далее аргумент секанса нужно «зациклить», чтобы обеспечить изломы в прямой. Именно на этом этапе другие решения используют «грязный хак» в виде остатка от деления. Здесь же используется последовательное взятие прямой и обратной функции синуса —

Такой подход позволяет производить стандартные математические операции над получившейся формулой,

Благодаря этой же записи можно упростить функцию квадрата в полярных координатах до более эстетического вида, используя представление тригонометрический функций в комплексном виде. В Wolfram Mathematica это можно сделать с помощью функций TrigToExp и ExpToTrig:
Благодаря этой же записи можно получить гладкие промежуточные фигуры между кругом и квадратом с помощью дополнительного множителя
, благодаря которому аргумент арксинуса не дотягивает до единицы —
:

А для того, чтобы функция пересекала заданную точку, нужно просто составить уравнение и пересчитать
:
3) параметры
и
были просто добавлены творческим способом и их влияние исследовалось экспериментально, по факту.
4) Прямоугольник легко получить перейдя к параметрическому виду и «растягиванием» осей
Но после этого
уже не будет значить угол, теперь
— это просто параметр, который описывает вектор через его проекции на координатные оси. Чтобы перейти обратно к полярным координатам нужно найти длину вектора (через корень суммы квадратов), угол (через арктангенс отношения), выразить этот угол через
и подставить получившееся выражение вместо
.
Упростить такую формулу уже посложнее, и для этого потребуется несколько этапов:
В результате получим такую формулу:

Как видите, даже в такой простой и банальной вещи как многоугольник, можно найти и придумать что-то новое. И на этом история не заканчивается — осталась неизвестной формула площади для общего случая, осталась неизвестной формула для произвольного, а не только правильного многоугольника, остались без рассмотрения разложения в степенные и тригонометрические ряды. Также, вероятно, подобного рода формула существует и для 3-мерного случая.
Поэтому если вам говорят, что в математике уже всё придумано и остались лишь задачи недоступные пониманию обычного человека — не верьте. Есть много сугубо практических задач, о существовании которых настоящие математики не подозревают, или их решение им не интересно из-за отсутствия достаточного хайпа вокруг них, или потому что у них уже есть примерное представление путей достижения для их решения. Не бойтесь браться за задачи, решение которых отсутствует в википедии, не бойтесь публиковать их решения и не бойтесь читать комментарии под статьями о бесполезности всего сущего.
P.S. скачать оригинальный документ для Mathematica можно здесь.

Формула для равностороннего многоугольника в полярных координатах выглядит очень просто
и имеет следующие параметры:
С этой формулой можно нарисовать звезду двумя путями:
1)

2)

Параметр

Параметр

Комплексная форма и модификации
Можно переписать исходную формулу в комплексном виде, и, несмотря на наличие в ней мнимых единиц, значение радиуса по-прежнему будет оставаться действительным:
На первый взгляд это может показаться бессмысленным, поскольку формула стала чуть более громоздкой — но не стоит спешить с выводами. Во-первых, в ней отсутствует арксинус, что полностью меняет математический смысл формулы и позволяет по-другому посмотреть на построение звёздчатого многоугольника. Во-вторых, из неё также можно получить компактные формулы для частных случаев, например



Как вы наверняка заметили, вращение вектора перестало быть равномерным — и именно из-за появления мнимой составляющей в радиусе.
Квадрокруги и прочее
У нашей формулы есть замечательный частный случай — квадрат, формулу для которого можно выписать как
или
(выбирайте, какая больше нравится).
В чуть более развёрнутом случае можно определить промежуточные фигуры между кругом и квадратом через точку

Можно также добавить вариативности этим фигурам с сохранением условия прохождения их через точку

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

А здесь площадь расширяется по экспоненциальному закону:

Переход к декартовым координатам
Любую формулу в полярных координатах можно выразить через уравнение в декартовых координатах, причём как минимум двумя способами — в зависимости от чего будет изменяться вид градиента на границе фигуры. Для этого достаточно посчитать угол через арктангенс от координат и привести формулу к константе через радиус-вектор вычитанием
или делением
Второй вариант предпочтительнее, поскольку даёт прямые градиенты вдоль сторон многоугольника.
Примечание
Здесь также нужно помнить, что в точке (0,0) возникает неопределенность из-за деления на ноль — которая, впрочем, легко разрешается через предел (который будет равным
в первом случае и нулю во втором).
Выражение
также можно упростить до
, коэффициенты числителя которого при разложении образуют знакочередующий вариант последовательности A034839.
Выражение
Значение формулы из правой части уравнения (во 2-м случае) будет меняться от
![]() |
![]() |
![]() |
![]() |
Можно использовать классический фильтр нижних частот
Для первого варианта:
![]() |
![]() |
![]() |
![]() |
И для второго:
![]() |
![]() |
![]() |
![]() |
Можно использовать и кусочно-непрерывную функцию, явно задавая границы интерполяции.
Помимо растеризации как таковой, можно задавать и деформации — например, сжать шахматную доску в круг:

Или даже натянуть её на сферу:

Формула
Appendix: как была получена формула
Классический стиль повествования в математических текстах состоит из чередования лемм/теорем и их доказательств — как если бы доказуемые утверждения появлялись у авторов в голове откровением свыше. И хотя в этом и бывает доля истины, чаще появлению формул предшествует некоторая исследовательская работа, описание которой может дать большее понимание их смысла, чем формальное доказательство; а верность утверждений, в свою очередь, можно проследить через верность шагов, к ним приведших.
Так и здесь — если бы статья началась с формулы в комплексной форме, то её появление было бы неочевидным и контр-интуитивным, а заявленные свойства требовали бы дополнительных доказательств. Но в тригонометрической форме записи историю её появления вполне возможно проследить.
1) начинаем с самого простого случая — задаче начертить прямую в полярных координатах. Для этого нужно решить уравнение

2) далее аргумент секанса нужно «зациклить», чтобы обеспечить изломы в прямой. Именно на этом этапе другие решения используют «грязный хак» в виде остатка от деления. Здесь же используется последовательное взятие прямой и обратной функции синуса —

Такой подход позволяет производить стандартные математические операции над получившейся формулой,
например
можно её продифференцировать и получить функцию для прямоугольной волны:



Благодаря этой же записи можно упростить функцию квадрата в полярных координатах до более эстетического вида, используя представление тригонометрический функций в комплексном виде. В Wolfram Mathematica это можно сделать с помощью функций TrigToExp и ExpToTrig:
Код
↓
Sec[1/2 ArcSin[k Sin[2 \[Phi]]]]^2//TrigToExp//ExpToTrig//Sqrt[#]&//FullSimplify
↓
Благодаря этой же записи можно получить гладкие промежуточные фигуры между кругом и квадратом с помощью дополнительного множителя

А для того, чтобы функция пересекала заданную точку, нужно просто составить уравнение и пересчитать
Код
↓
Solve[(Sqrt[2/(1+Sqrt[1-k Sin[2 \[Phi]]^2])] /. \[Phi]->Pi/4)==x, k] /. x->k
↓
3) параметры
4) Прямоугольник легко получить перейдя к параметрическому виду и «растягиванием» осей
Но после этого
Код
↓
↓
↓
With[{r = Sqrt[2/(1 + Sqrt[
1 - Sin[2 t]^2])]}, {Sqrt[(a r Cos[t])^2 + (b r Sin[t])^2],
ArcTan[(b r Sin[t])/(a r Cos[t])]}] // Simplify
↓
Solve[ArcTan[(b Tan[t])/a]==\[Phi], t]
↓
Sqrt[2] Sqrt[(a^2 Cos[t]^2 + b^2 Sin[t]^2)/(1 + Sqrt[Cos[2 t]^2])]
/. t -> ArcTan[(a Tan[\[Phi]])/b] // Simplify
↓
Упростить такую формулу уже посложнее, и для этого потребуется несколько этапов:
- перейти к декартовым координатам заменой
;
- перейти к экспоненциальному виду;
- упростить;
- сделать обратную замену
и
;
- опять перейти к экспоненциальному виду;
- упростить.
В результате получим такую формулу:
Код
↓
Sqrt[2] Sqrt[(a^2 b^2 Sec[\[Phi]]^2) /
((1 + Sqrt[Cos[2 ArcTan[(a Tan[\[Phi]])/b]]^2])
(b^2 + a^2 Tan[\[Phi]]^2))] /. \[Phi] -> ArcTan[x, y]
// TrigToExp // Simplify
// # /. {x -> Cos[\[Phi]], y -> Sin[\[Phi]]} &
// TrigToExp // Simplify // FullSimplify
↓

Заключение
Как видите, даже в такой простой и банальной вещи как многоугольник, можно найти и придумать что-то новое. И на этом история не заканчивается — осталась неизвестной формула площади для общего случая, осталась неизвестной формула для произвольного, а не только правильного многоугольника, остались без рассмотрения разложения в степенные и тригонометрические ряды. Также, вероятно, подобного рода формула существует и для 3-мерного случая.
Поэтому если вам говорят, что в математике уже всё придумано и остались лишь задачи недоступные пониманию обычного человека — не верьте. Есть много сугубо практических задач, о существовании которых настоящие математики не подозревают, или их решение им не интересно из-за отсутствия достаточного хайпа вокруг них, или потому что у них уже есть примерное представление путей достижения для их решения. Не бойтесь браться за задачи, решение которых отсутствует в википедии, не бойтесь публиковать их решения и не бойтесь читать комментарии под статьями о бесполезности всего сущего.
P.S. скачать оригинальный документ для Mathematica можно здесь.