Ваши квадрокруги — неправильные

    На днях вышла статья, посвящённая разнице между квадратом со скруглёнными краями и «квадрокругом» — промежуточной фигурой между окружностью и квадратом, полученной из формулы cуперэллипса. Мнения читателей разделились — не все увидели разницу, а кто увидели — не все отдали предпочтение «правильному» варианту. И я подозреваю, почему: эти ваши квадрокруги — ненастоящие!




    Альтернативное решение


    Предпосылки
    Некоторое время назад один мой близкий человек увлёкся рупоростроением и захотел построить рупор с круглым входом (для динамика), но прямоугольным выходом — из эстетических и практических соображений. Естественно, профиль должен перетекать из круга в квадрат достаточно плавно, чтобы не возникало излишних паразитных переотражений. Довольно быстро он нашёл формулу суперэллипса, однако результат его совершенно не вдохновил. При n от 1 до 2 углы были острыми, при n от 2 до бесконечности фигуры были больше похожи на квадраты со скруглёнными углами, чем на действительно промежуточные фигуры. И, поскольку квадрат получался лишь при стремлении n к бесконечности, совершенно непонятно было, на какой n останавливаться. 5? 10? 1000? А ещё при больших n формула становилась численно неустойчивой.

    А ещё ему хотелось иметь формулу не параметрически заданную, а в полярных координатах.

    В общем, он предложил мне подумать над альтернативным решением.

    Моё решение (в полярных координатах) получилось таким:

    $\rho =\sqrt{\frac{2}{1+\sqrt{1+\left(\frac{1}{k^4}-\frac{2}{k^2}\right) \sin ^2(2 \phi )}}}$


    в которой параметр $k$ от 0 до 1 задаёт степень «оквадрачивания», причём линейно — определяя точку пересечения (k,k) фигуры с диагональю. Это значит, что можно однозначно определить наш квадрокруг через 3 точки. И да, при $k = 1$ мы имеем самый настоящий квадрат, с прямыми сторонами и острыми углами. Ну а круг, соответственно, получается при $k = \frac{1}{\sqrt{2}}$ (косинус 45°). Варианты получаемых фигур отражены на КДПВ.

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

    $\frac{4 k^4 E\left(\frac{2 k^2-1}{k^4}\right)-4 \left(k^2-1\right)^2 K\left(\frac{2 k^2-1}{k^4}\right)}{2 k^2-1}$

    Примечание
    Эллиптические интегралы — это такие же функции, как и все остальные, вроде sin и cos. Похожее на операцию взятия первообразной название не должно вводить вас в заблуждение.


    Развитие


    Можно добавить больше вариативности полученным фигурам. Например, так:

    $\rho =\sqrt{\frac{1+\sqrt{\frac{(z-2)^2}{z^2}}}{1+\sqrt{1+\left(\frac{1}{k^4}-\frac{2}{k^2}\right) \sin^2(2\phi)+\left(\frac{4(1-z)}{z^2}\right)\cos^2(2 \phi)}}}$


    Здесь у нас появился ещё один параметр z, позволяющий искажать фигуру не нарушая идеологию построения. С её помощью можно приблизить нашу фигуру к суперэллипсу (на графиках отображён жёлтым цветом). Например, при n=4 (k=0.266, z=0.1) совпадение почти идеальное:



    при более высоких n разница уже более ощутима (n=5, k=0.6, z=0.48):



    n=10, k=0.942, z=1.02:


    И да, можно же пойти совсем радикальным способом! Такой дизайн иконок уж точно ни с чем не перепутаешь:



    Ну и с анимацией тоже можно слегка пофантазировать:



    Заключение


    Если некий дизайнер некоторой фирмы с (необязательно) фруктовым логотипом хочет получить уникальный дизайн, пусть и не отличающийся принципиально от уже существующих решений — возможно, стоит попробовать поискать и запатентовать действительно новую формулу, а не привлекать давно известное решение, навешивая на него тонны маркетингового булшита. Особенно если это может сделать just for fun простой человек из глубинки без специального образования.

    P.S. Исходники статьи здесь.

    P.P.S. Через уравнение кривой в декартовых координатах первоначальная формула будет выглядеть как

    $0=-2+\left(x^2+y^2\right) \left(1+\sqrt{1+\frac{\left(4-8 k^2\right) x^2 y^2}{k^4 \left(x^2+y^2\right)^2}}\right)$

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 41

      +1
      А как плавно изменяется радиус скругления в этих «настоящих» кругоквадратах? Какая разница с яблочными?
        0
        Зависит от того, как вы этот «радиус скругления» будете считать. Если брать касательные по пути, то при схожей форме кривых они тоже не особо будут отличаться (тут для n=5)
          +2
          Зависит от того, как вы этот «радиус скругления» будете считать.
          Ну как-как — обратная величина к кривизне, я других способов и не знаю )

          Я про эту картинку, собственно:
          image
          Изменение кривизны в углу сквирла имеет колоколоподобный характер, что выглядит вполне приятно для глаза.
            0
            Хотите посравнивать колоколоподобные кривые? Ну вот, например, посчитанные по этой формуле:
              0
              Форма очень похожа. Синяя линия от более близкой к кругу фигуры.
              С задачей «закруглить углы квадрата, плавно наращивая кривизну» обе фигуры справляются вполне хорошо.
              Отличия надо искать уже для производных кривизны, начиная с какой-то степени могут найтись разрывы…
                +3
                Ни с какой степени производных тут не появятся разрывы. Разрывы появляются при полиномиальной кусочно-непрерывной интерполяции, поскольку полином конечной степени имеет конечное количество производных. Однако даже кусочно-непрерывную интерполяцию можно организовать так, что она не будет иметь разрывов ни в каких производных — только для этого потребуются не полиномы, а другие функции.
            0
            поверните на 45 градусов, получится 4-листный клевер!
          0
          Напоминает видимое на экране в процессе пуска и остановки электронно-лучевой трубки.
          Вот где правда, кинетические формулы анимации, формула из поста — человеческий глаз привлекает что-то математически описуемое.
          Главное — изящно описать.
            +12
            «И я подозреваю, почему: эти ваши квадрокруги — ненастоящие!» — автор не пояснил, почему не настоящие?
              –1

              Вполне же очевидно — какие параметры не подставляй, ни круга, ни квадрата из квадрокруга не получишь. В отличие от.

                +4

                Формула суперэллипса — |x/a|^n + |y/b|^n = r.
                При a=b=1 и n=2 вы вполне себе получите круг, а при n→∞ фигура стремится к квадрату. При n=1, строго говоря, тоже получается квадрат (прямоугольный ромб).

              0

              А чем плохо задавать через норму? Пусть фигура это все точки, для которых ||(x,y)||_p = (|x|^p+|y|^p)^(1/p)=r. При p=1 получим ромб, p<1 будет давать вогнутые фигуры, а увеличение p приведет к плавному сглаживанию до круга (p=2) и дальше к квадарту (p->inf).

                +1
                Когда возведение в степень стремится к бесконечности, вычисления обычно становятся численно неустойчивыми.
                +10
                Если некий дизайнер некоторой фирмы с (необязательно) фруктовым логотипом хочет получить уникальный дизайн, пусть и не отличающийся принципиально от уже существующих решений — возможно, стоит попробовать поискать и запатентовать действительно новую формулу, а не привлекать давно известное решение, навешивая на него тонны маркетингового булшита. Особенно если это может сделать just for fun простой человек из глубинки без специального образования.


                Цель их дизайнеров была простой — заменить переход окружности в прямую, на более благовидный переход. Никаких целей получить уникальный дизайн не было. Они просто сменили форму иконок, и уже давно. И правильно сменили. Да, на давно известную формулу. Почему это они не могут «привлекать давно известную формулу»? И причем тут способности человека из глубинки и его формула?

                И что же вы называете тоннами маркетингового булшита? Статью про формулу квадрата-круга? Ролик на Ютюбе от Дроидера? Фирма Apple тут причем? Медиа они такие, раздувают темы постоянно.

                Жаль, что математическую по сути статью, вы перевели в нападки на вам неугодную фирму. Хуже если изначально цель была продолжить святую войну.

                  –8
                  Я до сих пор с кнопочным телефоном хожу — мне что эппл, что не эппл одинаково фиолетово. Так что никаких святых войн, просто хайп и ничего более — медиа они такие.
                    0
                    а то, что «математическая по сути статья» пытается убедить, что раз там непростое скругление по формуле, значит иконка удобнее и комфортнее, вас не смущает? Но разница с простым скруглением невооруженным глазом не видна, а 50% читающих просто «правильно» угадывают. Слепое тестирование со случайной перестановкой иконок это хорошо бы показало.
                    Иногда кнопка (иконка) — это просто кнопка (иконка). Телефоны Эппл ни на каплю не перестали бы быть телефонам Эппл, если бы там были иконки с обычным скруглением.
                    И эти статьи, где уже из-за такой ерунды, как форма скругления, люди ожесточенно бьются в комментах, сливают карму и прочее — лишь доказывают, что тема весьма «фанатичная». Жаль, что человечеству больше нечем заняться, осталось только выяснить исчезающе малую разницу между скруглением иконок и перебить тех, кто не согласен с тем, что это вообще не важно.
                      +1
                      Если вы о Секрет формы иконок ..., то статья не пытается убедить, а ясно объясняет, то, что дизайнеры и так знали. Объясняет языком математики — сравнением графиков кривизны.

                      Иконка в виде квадрата с углами-окружностями действительно менее удобна и комфортна чем квадрокруг из статьи.

                      Смущает, что вы так этого и не поняли. И более того выдумываете какие-то небылицы про «50% читающих просто «правильно» угадывают», в оправдание своего заблуждения. Вместо того, чтобы просто впитывать информацию из той области, в которой слабо разбираетесь.

                        0
                        Чем именно менее удобна и менее комфортна? На иконку с простым скруглением трудно нажимать? Или пальцем не попадают люди? Или что? И статья ничего из этого не объясняет. Так что никакого там вашего «ясно объясняет» нет. Там слепая вера, что если скругление описывается формулой, значит скругление более правильное.

                        А выдавать некую форму как более правильную и удобную только потому, что там есть математика — это маркетинг. Точнее маркетинговый и фанатский булшит.

                        Ну и про ваш абзац, где вы указываете мне, что мне следует просто впитывать информацию из области, в которой слабо разбираюсь… Вам удалось вызвать у меня улыбку, и думаю, не только у меня. Вы такой самоуверенный и высокомерный, это признак юности.
                    +1
                    Думаю это должно быть тут
                    Заголовок спойлера
                    Математическое построение графика, выглядящего как лист конопли
                      –4
                      А так хотелось поверить! Но нет...
                      Spoiler header

                        +2

                        Так в полярных координатах надо рисовать — r=Cannab(phi).

                          +1

                          Ну полярные координаты же!


                          Заголовок спойлера

                            0

                            Спасибо за наводку, не пользовался этим режимом в gnuplot раньше!

                              0

                              У функции аргумент — φ, так что график явно нужно строить в полярных координатах. И даже на вашем прослеживается, что если его свернуть, то будет то, что на картинке выше.

                            0
                            При n от 1 до 2 углы были острыми, при n от 2 до бесконечности фигуры были больше похожи на квадраты со скруглёнными углами, чем на действительно промежуточные фигуры. И, поскольку квадрат получался лишь при стремлении n к бесконечности, совершенно непонятно было, на какой n останавливаться. 5? 10? 1000?

                            Прямоугольный ромб квадратом не считается? (n=1).
                              +1
                              Считается, но промежуточные варианты между n=1 и n=2 имеют острые углы.

                                0
                                У вас при n=0.9999 на углах появляются разрывы. Возможно, это у меня программка где-то сбоит, но вы проверьте при сильном увеличении.
                                  0
                                  И да, в изготовлении рупора без углов не обойтись. Причем в начальных условиях окружность должна быть в середине, а квадрат снаружи.
                                0
                                в этой формуле нет таких хитростей, как функции остатка от деления, взятия/отбрасывания знака и прочего — как это требуется для суперэллипса.

                                Остатка от деления в суперэллипсе нет, а все остальное — есть, но только в параметрической форме записи. Если записать в полярной форме как у вас, то также получится довольно простое выражение.


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

                                  0
                                  Также интересно было бы послушать о смысле вашей формулы, о том как она выведена, потому как, в принципе, можно много разных придумать квадрокругов. Возможно идея, которая стоит за формулой, ценнее и красивее самой формулы.
                                  Если вам ещё интересно, то это есть в следующей статье, свободной от хайпа (ну или я пытался). А эту отправлю в черновики.
                                  +1
                                  Вы меня раскусили. Действительно, формула в начале — это лишь частный случай для произвольного правильного многоугольника; а окончательное решение описывало не квадрат, а прямоугольник (в полярных координатах, а не параметрически). Изначально статья и предполагалась её выводу, но получилась как-то слишком скучной даже для меня, как автора)
                                    +1
                                    Как-то так можно из общего случая:
                                      +1
                                      Выглядит, как лого из 80х
                                      +1

                                      я раскусил, что вы — хитрый тролль и байтер, что не отменяет того факта, что пишете хорошие статьи)

                                      0
                                      И да, при мы имеем самый настоящий квадрат, с прямыми сторонами и острыми углами.


                                      Если речь об Евклидовой геометрии, то у квадрата углы не острые, а прямые…
                                      Формулировочка хромает.
                                        0

                                        А чем рупоростроителя не устроила простая выпуклая оболочка над прямоугольником и кругом?


                                        А если важны акустические свойства, то как раз надо по ним и считать...

                                          0

                                          Спасибо за статью, скажите а можно ли перевести вашу формулу в формат пригодный для эффективного рендера на gpu? Особенность gpu состоит в том что там нужно выполнить формулу где на вход подается x и y координата пикселя и нужно вычислить цвет этого пикселя. Народ обычно моделирует различные фигуры через формулу расстояния и есть так называемая область sdf (signed distance field) моделирования фигур (например демки на https://www.shadertoy.com) где > 0 это за пределами фигуры (и берем цвет бэкграунда) <0 — точка находится внутри (и берем цвет самой фигуры) а все что недалеко от 0 то умножаем это значение на альфа-канал цвета и таким образом смешиваем цвет самой фигуры и бэкграунда и таким образом получаем антиалиасинг на гранях фигуры.
                                          Но это не самое идеальное решение так как для устранения антиалиасинга происходит интерполяция этой sdf-формулы внутри пикселя (так называемый radial filter) когда же идеальным решением будет вычислить цвет как сумму относительных площадей фигур (внутри пикселя) умноженных на их цвет. Соотвественно нужна формула которая на должна вычислять какую площадь занимает квадокруг внутри пикселя если известны координаты (x, y) и размер пиксельной сетки.
                                          Кстати не знаете случайно какая область математики изучает формулы фигур в дискретных координатах и при ограниченной точности промежуточных вычислений (например на gpu есть только 32-битные флоаты) ?

                                            +1
                                            Если правильно понял вопрос, то как-то так. Антиалиасинг сделан первым, что пришло в голову, нужно дорабатывать. Считать для этого площадь — теоретически правильно, практически трудноосуществимо.
                                              0
                                              Формулу можно сократить, если аналитически подставить арктангенс в синус — добавил её в P.P.S. (по мне, так выглядит похожей на бутылку вина — чем не элемент дизайна?)
                                            0
                                            А линейная интерполяция от 1 до корня из 2 чем плоха? В том числе в полярных координатах.

                                            Интерполяция активно использовалась в вашей предыдущей статье по циркулярным кривым. А здесь вдруг мимо.

                                            Only users with full accounts can post comments. Log in, please.