четверг, 12 февраля 2015 г.

С днём всех влюблённых или как подарить сердце в LibreOffice Calc

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

Кардиоида и маленькое занудство

Слово кардиоид — можно перевести с греческого как «имеющий вид сердца» (καρδία — сердце, εἶδος — вид). Первые упоминания об этой линии появились в начале XVIII века. Само же название этой линии в 1741 году дал Жан-Франсуа Сальвемини де Кастильон в одной из своих работ, посвящённых ей.
В полярных координатах её уравнение выглядит так: r = 2a(1 + cos(φ)). Построить её в LibreOffice Calc можно при помощи сетчатой диаграммы линии. Например, мы можем сделать столбец с углами от 0,017 до 6,283 радиана, и подставить это значение ссылкой вместо φ в формулу. Если вам сложно понимать радианы, можно использовать знакомые градусы от 1 до 360, но тогда вам нужно будет позаботиться о переводе их в радианы, когда вы будете записывать формулу. Константа a в уравнении — это радиус окружности, поэтому мы его можем приравнять к единице, или другими словами, в данном примере опустить. Формулы для таблицы будут выглядеть так: =2*(1+COS(A1)) — для входящих углов в радианах =2*(1+COS(RADIANS(A1))) — для входящих углов в градусах. Затем нам нужно выделить результирующий столбец (углы не нужно указывать в диаграмме, они заданы будут автоматически) и создать сетчатую диаграмму «только линии». Ось в сетчатых диаграммах в LibreOffice повернута вертикально, поэтому нам нужно развернуть диаграмму на 90 градусов против часовой стрелки. Выйдите из редактора диаграмм, нажмите на неё правой кнопкой мыши и выберите в контекстном меню «Положение и размер». На вкладке «Вращение» в поле «Угол поворота» поставьте значение 270 (360-90=270). Теперь у нас есть классическая кардиоида:

Сетчатая диаграмма с изображением кардиоиды в LibreOffice Calc

Как видите, в электронных таблицах типа Calc и Excel, построение линий в полярных координатах выглядит не очень эстетично для наших целей, да и делается это достаточно муторно, хотя такой способ тоже приемлем. Кроме того, если мы будем делать более сложные линии (например спирали), то нам придётся действительно изгаляться, чтобы добиться нужного результата. Поэтому, дальше я буду описывать только прямоугольную (Декартову) систему координат.
Алгебраическая форма записи кардиоиды в прямоугольных координатах:

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

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

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

где a — константа (радиус окружности), а t — это параметр, который мы будем задавать.
Для того чтобы повернуть наше сердце в нормальное положение, можно просто поменять x и y местами. Для нашей цели такое решение достаточно приемлемо. Поэтому таблица будет выглядеть так: в первом столбце у нас будут цифры от 0 до 6,28 (=2*3,14), я сделал с шагом 0,1, во второй столбец мы помещаем формулу =2*SIN(A1)-SIN(2*A1), а в третий =2*COS(A1)-COS(2*A1) и протягиваем их до конца столбца. Диаграмму будем строить на двух последних столбцах. Выделяем их, и вызвав мастер диаграмм, выбираем диаграмму XY (разброс) «Только линии». Легенда нам тут не нужна, поэтому на четвёртом шаге можно снять галочку «Показать легенду». После нажатия в мастере «Готово», щелкаем по линии правой кнопкой мыши и выбираем «Формат рядов данных...». На вкладке «Линии» в разделе «Цвет» выбираем желаемый цвет, я выбрал «Красный 3». После этого можно выйти из мастера диаграмм. Чтобы придать диаграмме правильные очертания её нужно немного уменьшить по горизонтали. Вот, что в итоге у меня получилось.

График кардиоиды в прямоугольных координатах

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

Отражение света от внутренней поверхности кольца

Изображение взято с сайта mathematische-basteleien.de

Спираль Архимеда

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

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

Спираль, это естественно только один виток, поэтому для наших целей нам нужно будет взять две спирали: одну, закрученную по часовой стрелке, и второю, её близняшку, закрученную против часовой. Поэтому, множество на котором нам нужно будет строить спираль -3,5π ≤ t ≤ 3,5π .
Заполним столбец A числами от -11 до 11 (≈3,5*3,14) с шагом 0,1. В первую ячейку второго столбца введём формулу для x: =A1*COS(A1), в первую ячейку третьего столбца введём формулу для y: =A1*SIN(A1), протянем их до конца множества. Теперь нам осталось только сделать график для нашей кривой. Выделяем второй и третий столбец и запускаем мастер диаграмм, выбираем диаграмму XY(разброс), убираем легенду и перекрашиваем линию, то есть, шаги те же, что и для предыдущего графика. В центре мы получили маленькое красивое сердечко с подвеской:

Спираль Архимеда в прямоугольных координатах в LibreOffice Calc

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

Эвольвента окружности

Так как я обещал в начале статьи особо не занудствовать математическими терминами и выводами, то скажем просто: Эвольвента окружности, в данном контексте, представляет обобщённую форму спирали Архимеда :). Если вам интересны трансцендентальные кривые и их свойства, я рекомендую обратиться к книге А. А. Совелова "Плоские кривые. Систематика, свойства, применения", а тут я постараюсь продолжить повествование ненавязчиво и без лишних углублений в математику.
Параметрическая форма в прямоугольных координатах для эвольвенты окружности выглядит следующим образом:

Уравнение Эвольвенты окружности параметрического вида в прямоугольных координатах

В этой формуле у нас появилось 2 новых параметра: R и h. Не тяжело догадаться, что при h &lt 0 и h = -R (например, R=1, h=-1) мы получим уравнение спирали Архимеда с иксами в обратном порядке для того случая, который был представлен выше. «Играя» этими двумя параметрами, мы можем изменять вид линии, от абсолютного круга, до различных спиралей. Для нас же, наверное, будет интересен случай когда R = 1, а h = 0. То есть уравнение примет вид

Упрощенное уравнение Эвольвенты окружности параметрического вида в прямоугольных координатах

Если вы читали статью с самого начала, то для вас не будет сложностью построить диаграмму. Множество, на котором я предлагаю строить ее с заданными параметрами: от -10,9 до 10,9. Итоговый вид её будет следующий:

График Эвольвенты окружности в прямоугольных координатах в LibreOffice Calc

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

Бокаловидное сердце

Это изображение сердца было предложено H. Dascanio в 2003 году. К сожалению, самые ранние источники указывают, что это была личная переписка, и более подробная информация появления этого сердца останется, наверное, загадкой. Формула, предложенная Dascanio, выглядит вот так:

Формула бакаловидного сердца

В этой формуле есть натуральный логарифм и модуль числа. В записи LibreOffice Calc эти формулы буду выглядеть для x =SIN(A2)*COS(A2)*LN(ABS(A2)) и для y =(ABS(A2)^(1/3))*(COS(A2)^0,5). Диапазон значений параметра t должен быть от -1 до 1. При построении этого сердца есть один нюанс, хотя в общем, достаточным шагом будет 0,05, приблизительно с -0,2 и до 0,2 приближаясь к нулю нужно шаг уменьшать, создавая тем самым лучшее разрешение графика на этом интервале (в прилагаемом файле есть пример). В остальном это сердце строится как и предыдущие. Изображение, которое мы должны получить, выглядит так:

График бакаловидного сердца в LibreOffice Calc

Вытянутое сердце

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

Формула вытянутого сердца для прямоугольных координат в параметрической форме

Строить его нужно на диапазоне от -π до π с шагом 0,01. Сердце получается немного продолговатым, но достаточно приемлемым по форме, если сравнивать с предыдущим вариантом:

График вытянутого сердца для прямоугольных координат в libreOffice Calc

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

Закрашенное вытянутое сердца для прямоугольных координат в libreOffice Calc

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

Классический вид сердца

Эта формула сердца была предложена Georg-Johann, одним из редактором Wikipedia, в июле 2009 года. Насколько я понял, оно было создано путем интерполяции.
На мой взгляд, из всего что я видел, подготавливаясь к этой статье, этот вариант является самым правильным и знакомым. Хотя, как говорится в поговорке: «на вкус и цвет все фломастеры разные». Формула в параметрическом виде для полярных координат этого сердца выглядит следующим образом:

Формула классического сердца для прямоугольных координат в параметрической форме

В LibreOffice Calc мы его строим так же, как и предыдущие, только диапазон будет от 0 до π, шаг я предлагаю сделать 0,1. Во втором столбце для координаты х вводим формулу =16*SIN(A1)^3, а в третий столбец для y =13*COS(A1)-5*COS(2*A1)-2*COS(3*A1)-COS(4*A1). После чего выделяем второй и третий столбец и, как и в предыдущих случаях, строим диаграмму.
прилагаемом файле

График классического сердца в прямоугольных координатах в LibreOffice Calc

Прикладываю файл с примерами всех графиков с сердцами.

Формула любви или вместо заключения

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

Дополнительная литература и источники