Как нарисовать снежинку коха карандашом поэтапно. Кривая коха

At Снежинка Коха,Треугольник Серпинского и прочие фракталы

Целый месяц я самозабвенно училась плести веревочные узоры, учила всех, чье внимание удавалось зафиксировать на этом странном занятии, рассказывала про индейцев и эскимосов, и пыталась изобрести что-нибудь самостоятельно. Мой увядающий энтузиазм поддерживала Юля, соглашаясь, если не учиться, так хотя бы смотреть, что у меня получается. В конце концов, мне удалось сочинить восьмиконечную звезду, заворожившую меня своей симметрией и элегантностью плетения. Мне захотелось подвести под это маленькое изобретение теоретическую базу, и я принялась рыться в Интернете на предмет «символического значения октограммы». Так от игры в веревочку мы перешли к обсуждению свойств звездчатых многоугольников, а от них к звездчатым многогранникам и Платоновым телам. Слово за слово, и Юля унесла читать сначала «Модели многогранников», а потом и «Математика и искусство». Могу вообразить, какое впечатление должен производить доктор скорой помощи, читающий на дежурстве между вызовами книжку по математике. На следующий день Юля пришла в 9 утра будить меня в моей берлоге и делиться впечатлениями от прочитанного.

Мрачным апрельским утром хочется спать до весны, и только какое-нибудь энергичное внешнее воздействие способно вытряхнуть меня из постели. Юля сделала мне "омолаживающий" массаж, жестоко отодрав все мясо от костей, так что я с воплями вскочила и побежала варить кофе. Пока я химичила с кофейником - кофе, сахар, немного корицы и мускатного ореха - она щебетала про то, что умного сказал Кант, какие оказывается красивые правильные многогранники, про симметрию живого и неживого, а я рассматривала радужные круги, плывущие перед глазами и думала: «Это уже старость или весенний авитаминоз?» Под окном соседка с собакой переплывала огромную лужу - целое озеро кофейной воды с бензиновыми пятнами на поверхности. Бензиновые пятна - цвета побежалости…
«А знаешь, какие красивые фракталы!» - спросила я неожиданно.
«Это еще что за звери?»
« Ну… графики такие… функции комплексной переменной… кажется… Дивной красоты! Пойдем, покажу - у меня в компьютере осталось несколько картинок.»
Честно говоря, фракталами я увлекалась десять лет назад, все что осталось - несколько JPG-файлов, засевшее в памяти слово «Мандельброт» и еще что-то про изрезанную береговую линию. Так что вопрос, каким образом раскрашиваются точки плоскости, поставил меня в тупик. Я еще смогла извлечь из глубин замусоренной памяти формальное определение комплексного числа, но понятия не имела, что это за функция, которая плодит такие фантастические картины. Так что пришлось взять тайм-аут для ознакомления с теорией. Теперь выяснить, что за зверь Мандельброт и с чем его едят, стало делом чести.
Вот что мною добыто и освоено:
http://robots.ural.net/fractals/intro/fractals.htm
Шабаршин А.А. ВВЕДЕНИЕ ВО ФРАКТАЛЫ



На следующий день мы продолжили заседание нашего импровизированного математического кружка в Екатерининском парке. Утопая в апрельских сугробах, пористых как Куб Серпинского, я объясняла построение триадной кривой Коха, а Юля звонила из парка по мобильнику всем знакомым, которых считала компетентными, и просила объяснить, что такое комплексное число. Потом я пыталась объяснить третьекласснице Олесе, что такое числовая прямая на примере очереди за колбасой. Разошлись только когда в ботинках захлюпала вода и дождь просочился за шиворот. Вобщем каждый сходит с ума по-своему.

Фракталы – это объекты, части которых подобны целому. Например, ветка дерева подобна дереву, а каждый лист папоротника подобен ветке. Если снять с обычной капусты или луковицы несколько листов, то останется такое же растение, лишь уменьшится его размер. Но, пожалуй, самым интересным растением-фракталом является румынская капуста или капуста Романеско.

Выдающийся японский художник-иллюстратор Кацусика Хокусай (1760–1849) увидел фрактальные элементы в природных явлениях задолго до возникновения теории фракталов.

Интересным примером фрактала является так называемая кривая Коха или снежинка Коха . Она была построена в 1904 году шведским математиком (1870–1924). Строится эта кривая просто, но в результате выходит довольно причудливый объект.

Возьмём обычный равносторонний треугольник. На первом шаге разделим каждую сторону на три равные части, выбросим средний отрезок, вместо него построим два отрезка такой же длины, которые направлены вовне фигуры и касаются друг друга. В результате получим звезду Давида. И так далее, на каждом шаге среднюю часть каждого из отрезков периметра меняем на два такие же отрезка.

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

Показать это достаточно просто. Пусть p – периметр исходного треугольника. Заметим, что на каждом шаге исчезает отрезок, длина которого равна трети длины каждой стороны периметра, но вместо него добавляется два таких же отрезка.

Таким образом, на каждом шаге периметр фигуры множится на 4/3, и на n -м шаге периметр фигуры составляет . Поскольку , то P(n) стремится к бесконечности при n стремящемся к бесконечности.

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

Например, если сторону равностороннего треугольника уменьшить в 3 раза, то его площадь уменьшится в 3 2 =9 раз. Пусть площадь исходного треугольника равна S. На первом шаге к фигуре прибавляется 3 треугольника, площадь каждого из которых равна S /9.

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

Заметим, что в квадратных скобках стоит сумма бесконечно убывающей геометрической прогрессии со знаменателем , и её сумма равна .

Ерик Хайнес , современный специалист в области компьютерной графики и дизайна, построил трёхмерный аналог снежинки фон Коха.

Основателем математической теории фракталов является французский и американский математик (1924–2010). Именно он ввёл в употребление термин "фрактал" от латинского слова fractus (ломанный).

Этот неординарный человек родился в Варшаве, потом его семья переехала в Париж, где он окончил Политехническую школу – знаменитое учебное заведение для подготовки инженеров, основанное ещё в 1794 году.

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

С 1958 года Мандельброт работает в научно-исследовательском центре IBM. При создании персональных компьютеров одной из ключевых проблем было подавление шумов в проводах. Мандельброт заметил, что графики шумов за день, час и даже секунду идентичны, и это стало ключевой догадкой, которая помогла решить проблему.

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

В рамках своих экономических исследований Мандельброт занялся изучением статистики цен на хлопок на протяжении длительного периода (более 100 лет). Мандельброт обнаружил похожесть кратковременных колебаний и колебаний на длительных интервалах времени. Это открытие оказалось неожиданным для экономистов.

Трёхмерный аналог
снежинки фон Коха

По сути, Мандельброт применил основы своего рекурсивного (фрактального) метода.

Следует заметить, что Мандельброт исследовал преимущественно геометрические свойства случайных колебаний, а их строгое математическое обоснование дал другой выдающийся математик – Норберт Винер (1894–1964), который считается основателем кибернетики и теории искусственного интеллекта.

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

Другое интересное исследование, которое проводил Мандельброт и о котором стоит рассказать, – это проблема измерения береговой линии. Эта проблема оказалась совсем не банальной, как может показаться на первый взгляд.

В 1967 году в журнале Science Мандельброт публикует статью под названием «Какова длина побережья Великобритании». Казалось бы, всё очень просто – чтобы измерить длину побережья, нужно на карте вдоль периметра страны отложить отрезки, отвечающие определённым длинам (например, 100 км), а потом эту единичную величину умножить на количество отрезков, отложенных вдоль периметра (см. рисунок).

Но оказалось, что результат измерения существенно зависит от того, какую длину отрезка выбрать в качестве единицы измерения. Так, при длине отрезка в 200 км длина побережья оказалась равной 2400 км, при длине отрезка 100 км – 2800, а при длине отрезка 50 км суммирование отрезков даёт длину побережья 3400 км.

Результаты измерений сильно отличаются, и незначительными ошибками это назвать никак нельзя. Мандельброт приходит к выводу, что говорить о длине побережья в обычном понимании нет смысла, и что есть кривые, которые имеют дробную (фрактальную) размерность, т.е. больше, чем единица (как у линии), и меньше двух (как у плоскости). Например, снежинка Коха имеет фрактальную размерность log 3 4≈1,262.



Измерение длины береговой линии Великобритании отрезками 200 км, 100 км и 50 км

Завершая рассказ о Бенуа Мандельброте, приведём несколько его высказываний:

– Основная идея состоит в том, что когда вы приближаете фрактальный объект к себе, он продолжает выглядеть по-прежнему.

– Во всей математике гладкость – вот что было главным. Я же предложил изучать неровности и шероховатости.

– Математика описывает гладкий мир, построенный человеком. А шероховатый мир, созданный природой, оказался за пределами нашей математики.

– Математики пишут формулы, я же всю жизнь рассматривал картинки.

Рассказывая о фракталах, стоит вспомнить их важное применение – фрактальные антенны и их изобретателя – Натана Коэна . История его изобретения, изменившая его биографию, довольно забавная.

Он жил в Бостоне, работал в должности профессора в Бостонском университете, областью его научных интересов были астрономия и астрофизика. Но кроме того он был радиолюбителем и на крыше его дома стояла большая антенна.


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

Заинтересовавшись этим, Коэн меняет направление своих научных интересов и через несколько лет ставит дело на коммерческую основу – в 1995 году он основывает компанию Fractal antenna systems.

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

Идеи Натана Коэна позволили спрятать антенну внутрь телефона. При этом элементы микросхемы, расположенные на плате, имеют форму фрактальной фигуры, называемой «ковёр Серпинского ».

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

Тем, кто заинтересовался фракталами, автор советует посмотреть фильм «Фракталы. Поиски новых размерностей» (он есть на youtube.com), или просто посмотреть причудливые фрактальные картинки, для этого нужно лишь зайти в google-картинки и в поисковой строке набрать «fractals».

С.И. Доценко , кандидат физико-математических наук, старший научный сотрудник факультета компьютерных наук и кибернетики КНУ имени Тараса Шевченко

Эта фигура - один из первых исследованных учеными фракталов. Она получается из трех копий кривой Коха , которая впервые появилась в статье шведского математика Хельге фон Коха в 1904 году. Эта кривая была придумана как пример непрерывной линии, к которой нельзя провести касательную ни в одной точке. Линии с таким свойством были известны и раньше (Карл Вейерштрасс построил свой пример еще в 1872 году), но кривая Коха замечательна простотой своей конструкции. Не случайно его статья называется «О непрерывной кривой без касательных, которая возникает из элементарной геометрии».

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

Основные свойства кривой Коха

1. Она непрерывна, но нигде не дифференцируема. Грубо говоря, именно для этого она и была придумана - как пример такого рода математических «уродцев».

2. Имеет бесконечную длину. Пусть длина исходного отрезка равна 1. На каждом шаге построения мы заменяем каждый из составляющих линию отрезков на ломаную, которая в 4/3 раза длиннее. Значит, и длина всей ломаной на каждом шаге умножается на 4/3: длина линии с номером n равна (4/3) n –1 . Поэтому предельной линии ничего не остается, кроме как быть бесконечно длинной.

3. Снежинка Коха ограничивает конечную площадь. И это при том, что ее периметр бесконечен. Это свойство может показаться парадоксальным, но оно очевидно - снежинка полностью помещается в круг, поэтому ее площадь заведомо ограничена. Площадь можно посчитать, и для этого даже не нужно особых знаний - формулы площади треугольника и суммы геометрической прогрессии проходят в школе. Для интересующихся вычисление приведено ниже мелким шрифтом.

Пусть сторона исходного правильного треугольника равна a . Тогда его площадь . Сначала сторона равна 1, а площадь: . Что происходит при увеличении итерации? Можно считать, что к уже имеющемуся многоугольнику пристраиваются маленькие равносторонние треугольнички. В первый раз их всего 3, а каждый следующий раз их в 4 раза больше чем было в предыдущий. То есть на n -м шаге будет достроено T n = 3 · 4 n –1 треугольничков. Длина стороны каждого из них составляет треть от стороны треугольника, достроенного на предыдущем шаге. Значит, она равна (1/3) n . Площади пропорциональны квадратам сторон, поэтому площадь каждого треугольничка равна . При больших значениях n это, кстати, очень мало. Суммарный вклад этих треугольничков в площадь снежинки равен T n · S n = 3/4 · (4/9) n · S 0 . Поэтому после n -го шага площадь фигуры будет равна сумме S 0 + T 1 · S 1 + T 2 · S 2 + ... +T n · S n = . Снежинка получается после бесконечного числа шагов, что соответствует n → ∞. Получается бесконечная сумма, но это сумма убывающей геометрической прогрессии, для нее есть формула: . Площадь снежинки равна .

4. Фрактальная размерность равна log4/log3 = log 3 4 ≈ 1,261859... . Аккуратное вычисление потребует немалых усилий и подробных разъяснений, поэтому здесь приведена, скорее, иллюстрация определения фрактальной размерности. Из формулы степенной зависимости N (δ ) ~ (1/δ ) D , где N - число пересекающихся квадратиков, δ - их размер, а D - размерность, получаем, что D = log 1/ δ N . Это равенство верно с точностью до прибавления константы (одной и той же для всех δ ). На рисунках изображена пятая итерация построения кривой Коха, зеленым закрашены квадратики сетки, которые с ней пересекаются. Длина исходного отрезка равна 1, поэтому на верхнем рисунке длина стороны квадратиков равна 1/9. Закрашено 12 квадратиков, log 9 12 ≈ 1,130929... . Пока не очень похоже на 1,261859... . Смотрим дальше. На среднем рисунке квадратики в два раза меньше, их размеры 1/18, закрашено 30. log 18 30 ≈ 1,176733... . Уже лучше. Внизу квадратики еще вдвое меньше, закрашено уже 72 штуки. log 72 30 ≈ 1,193426... . Еще ближе. Дальше нужно увеличивать номер итерации и одновременно уменьшать квадратики, тогда «эмпирическое» значение размерности кривой Коха будет неуклонно приближаться к log 3 4, а в пределе и вовсе совпадет.

В Бостоне была необыкновенно теплая зима, но мы все-таки дождались первого снегопада. Наблюдая за снегопадом в окно, я задумался о снежинках и о том, что их структуру совсем непросто описать математически. Существует однако одна, особого рода снежинка, известная как снежинка Коха, которая может быть описана сравнительно просто. Сегодня мы рассмотрим, как её форма может быть построена с помощью Среды разработки приложений COMSOL Multiphysics.

Создание снежинки Коха

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

  1. Начнем с равностороннего треугольника, который фактически является нулевой итерации снежинки Коха.
  2. Найдем центральную точку на каждом ребре текущей снежинки.
  3. В центре каждого ребра, добавим выступающий наружу равносторонний треугольник со стороной равной 1/3 длины текущего ребра.
  4. Определим следующую итерацию снежинки Коха, чтобы оказаться снаружи с внешней стороны предыдущей снежинки и всех добавленных треугольников.
  5. Повторим шаги 2-4 столько раз, сколько потребуется.

Данная процедура иллюстрируется на рисунке ниже для первых четырех итераций отрисовки снежинки.

Первые четыре итерации снежинки Коха. Изображение от Wxs — собственная работа. Лицензия CC BY-SA 3.0 , в Wikimedia Commons .

Построение геометрии снежинки Коха

Поскольку теперь мы знаем, какой алгоритм использовать, то давайте посмотрим, как создать такую структуру с помощью Среды разработки приложений COMSOL Multiphysics. Мы откроем новый файл и создадим двумерный объект геометрическая часть (geometry part) в узле Глобальные определения . Для этого объекта зададим пять входных параметров: длина стороны равностороннего треугольника; х – и y – координаты средней точки основания; и компоненты вектора нормали, направленной от середины основания к противолежащей вершине, как показано на рисунках ниже.


Пять параметров, используемых для задания размера, положения и ориентации равностороннего треугольника.


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


Объект может поворачиваться вокруг центра нижнего ребра.


Объект можно переместить относительно начала отсчета.

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

Разметка пользовательского интерфейса приложения в Среде разработки приложений

Приложение имеет очень простой пользовательский интерфейс. Оно содержит только два компонента, с которыми пользователь может взаимодействовать: Ползунок (Слайдер) (отмеченный как 1 на рисунке ниже), с помощью которого можно задавать число итераций нужных для создания снежинки, и Кнопка (метка 2), по нажатию которой создается и отображается получившаяся геометрия. Имеются также Текстовая надпись (метка 3) и Отображение (Показ) данных (метка 4), которые показывают число заданных итераций, а также окно Графики (метка 5), в котором выводится итоговая геометрия.


Приложение имеет одну единственную форму с пятью компонентами.

В приложении есть два Определения (Declarations) , одно из которых определяет целое значение, называемое Iterations , и, по умолчанию, равное нулю, но которое может быть изменено пользователем. Определяется также 1D-массив чисел двойной точности с именем Center . Единственный элемент в массиве имеет значение 0.5, которое используется для нахождения центральной точки каждого ребра. Это значение никогда не изменяется.


Настройки для двух Определений.

Компонент "Слайдер" в пользовательском интерфейсе контролирует значение целого числа, параметра Iterations . Скриншот ниже показывает настройки "Слайдера" и значений, которые задаются как целые числа в диапазоне между 0 и 5. Тот же источник (как и для слайдера) также выбран для компонента Отображение данных (Data Display) для отображения на экране приложения числа заданных итераций. Мы ограничиваем потенциального пользователя пятью итерациями, поскольку используемый алгоритм неоптимальный и является не очень эффективным, но достаточно простым для реализации и демонстрации.


Настройки для компонента "Слайдер".

Далее, посмотрим на настройки для нашей кнопки, показанные на скриншоте ниже. При нажатии кнопки запускаются на исполнение две команды. Сначала вызывается метод CreateSnowFlake . Затем в графическом окне выводится получившаяся геометрия.


Настройки кнопки.

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

1 model.geom("geom1" ).feature().clear(); 2 model.geom("geom1" ).create("pi1" , "PartInstance" ); 3 model.geom("geom1" ).run("fin" ); 4 for (int iter = 1; iter "geom1" ).getNEdges()+1; 6 UnionList = "pi" + iter; 7 for (int edge = 1; edge "geom1" ).getNEdges(); edge++) { 8 String newPartInstance = "pi" + iter + edge; 9 model.geom("geom1" ).create(newPartInstance, "PartInstance" ).set("part" , "part1" ); 10 with(model.geom("geom1" ).feature(newPartInstance)); 11 setEntry("inputexpr" , "Length" , toString(Math.pow(1.0/3.0, iter))); 12 setEntry("inputexpr" , "px" , model.geom("geom1" ).edgeX(edge, Center)); 13 setEntry("inputexpr" , "py" , model.geom("geom1" ).edgeX(edge, Center)); 14 setEntry("inputexpr" , "nx" , model.geom("geom1" ).edgeNormal(edge, Center)); 15 setEntry("inputexpr" , "ny" , model.geom("geom1" ).edgeNormal(edge, Center)); 16 endwith(); 17 UnionList = newPartInstance; 18 } 19 model.geom("geom1" ).create("pi" +(iter+1), "Union" ).selection("input" ).set(UnionList); 20 model.geom("geom1" ).feature("pi" +(iter+1)).set("intbnd" , "off" ); 21 model.geom("geom1" ).run("fin" ); 22 }

Давайте пройдемся по коду "построчно", чтобы понять, какую функцию выполняет каждая строка:

  1. Очищаем все существующие геометрические последовательности, так чтобы мы смогли начать с нуля.
  2. Создаем один экземпляр объекта — нашего "треугольника", используя размер, ориентацию и расположение по умолчанию. Это наша снежинка нулевого порядка с меткой-идентификатором pi1 .
  3. Финализируем геометрию. Данная операция требуется для обновления всех индексов геометрии.
  4. Начнем процесс перебора всех заданных итераций снежинки, используя определение Iterations , как условие для остановки.
  5. Определяем пустой массив строк, UnionList . Каждый элемент массива содержит метку-идентификатор различных геометрических объектов. Длина этого массива равна числу ребер в последней итерации плюс один.
  6. Определяем первый элемент в массиве UnionList . Он является меткой-идентификатором результата предыдущей итерации. Имейте в виду, что нулевая итерация уже создана в строках 1-3. Целочисленное значение iter автоматически преобразуется в строку и добавится в конец строки "pi" .
  7. Перебираем число ребер в ранее сгененрированной снежинке.
  8. Задаем метку идентификатора для нового экземпляра объекта, обращающегося с геометрической части (part instance) "треугольник", который создается на этом ребре. Заметьте, что целочисленные значения iter и edge последовательно добавляются в конец строки pi , метки-идентификатора экземпляра объекта.
  9. Создаем экземпляр объекта "треугольник" и присваиваем ему метку-идентификатор, которая только что была задана.
  10. Указываем, что строки 11-15 относятся к текущему экземпляру объекта (part instance), используя оператор with()/endwith() .
  11. Определяем длину стороны треугольника. Нулевой порядок имеет длину стороны равную единице, так что n- я итерация имеет длину стороны (1/3) n . Функция toString() требуется для приведения (преобразования) типов данных — числа с плавающей точкой в строку.
  12. Задаем x -координату нового треугольника, как центральную точку стороны последней итерации. Метод edgeX задокументирован в . Напомним, что Center устанавливается равным 0.5.
  13. Задаем y -координату.
  14. Задаем x -компоненту вектора нормали треугольника. Метод edgeNormal также задокументирован в Справочном руководстве по программированию в среде COMSOL (COMSOL Programming Reference Manual) .
  15. Задаем y -компоненту вектора нормали.
  16. Закрываем оператор with()/endwith() .
  17. Добавляем метку-идентификатор текущего треугольника к списку всех объектов.
  18. Закрываем перебор всех ребер.
  19. Создаем Boolean Union (логическое объединение) всех объектов в геометрическую последовательность. Присваиваем метке новое значение piN , где N есть номер следующей итерации. Вокруг (iter+1) требуются круглые скобки, так чтобы увеличенное значение iter преобразовалось в строку.
  20. Указываем, что внутренние границы конечного объекта не сохраняются.
  21. Финализируем геометрию. Последняя операция обновляет все индексы геометрии для следующей итерации снежинки.
  22. Закрываем цикл итераций создания снежинки.

Таким образом, мы охватили все аспекты и элементы нашего приложения. Давайте посмотрим на результаты!


Наше простое приложение для построения снежинки Коха.

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

Попробуйте Самостоятельно

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

  • Скачайте руководство Введение в Среду разработки приложений на английском языке
  • Просмотрите эти видеоролики и узнайте, как использовать
  • Прочитайте эти топики, чтобы познакомиться с тем, как приложения моделирования используются в

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

Какое приложение вы бы хотели создать в среде COMSOL Multiphysics? за помощью.

Эта фигура - один из первых исследованных учеными фракталов. Она получается из трех копий кривой Коха, которая впервые появилась в статье шведского математика Хельге фон Коха в 1904 году. Эта кривая была придумана как пример непрерывной линии, к которой нельзя провести касательную ни в одной точке. Линии с таким свойством были известны и раньше (Карл Вейерштрасс построил свой пример еще в 1872 году), но кривая Коха замечательна простотой своей конструкции. Не случайно его статья называется «О непрерывной кривой без касательных, которая возникает из элементарной геометрии».

Как по шагам строится кривая Коха.

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

Основные свойства кривой Коха

1.О на непрерывна, но нигде не дифференцируема. Грубо говоря, именно для этого она и была придумана - как пример такого рода математических «уродцев».

2. Имеет бесконечную длину. Пусть длина исходного отрезка равна 1. На каждом шаге построения мы заменяем каждый из составляющих линию отрезков на ломаную, которая в 4/3 раза длиннее. Значит, и длина всей ломаной на каждом шаге умножается на 4/3 : длина линии с номером n равна (4/3)n–1 . Поэтому предельной линии ничего не остается, кроме как быть бесконечно длинной.

3. Снежинка Коха ограничивает конечную площадь. И это при том, что ее периметр бесконечен. Это свойство может показаться парадоксальным, но оно очевидно - снежинка полностью помещается в круг, поэтому ее площадь заведомо ограничена. Площадь можно посчитать, и для этого даже не нужно особых знаний - формулы площади треугольника и суммы геометрической прогрессии проходят в школе. Для интересующихся вычисление приведено ниже мелким шрифтом.

Пусть сторона исходного правильного треугольника равна a. Тогда его площадь. Сначала сторона равна 1, а площадь: . Что происходит при увеличении итерации? Можно считать, что к уже имеющемуся многоугольнику пристраиваются маленькие равносторонние треугольнички. В первый раз их всего 3, а каждый следующий раз их в 4 раза больше чем было в предыдущий. То есть на n-м шаге будет достроено Tn = 3 · 4n–1 треугольничков. Длина стороны каждого из них составляет треть от стороны треугольника, достроенного на предыдущем шаге. Значит, она равна (1/3)n. Площади пропорциональны квадратам сторон, поэтому площадь каждого треугольничка равна . При больших значениях n это, кстати, очень мало. Суммарный вклад этих треугольничков в площадь снежинки равен Tn · Sn = 3/4 · (4/9)n · S0 . Поэтому после n-го шага площадь фигуры будет равна сумме S0 + T1 · S1 + T2 · S2 + ... +Tn · Sn = . Снежинка получается после бесконечного числа шагов, что соответствует n → ∞ . Получается бесконечная сумма, но это сумма убывающей геометрической прогрессии, для нее есть формула: . Площадь снежинки равна .


Варианты построения снежинки Коха

Снежинка Коха «наоборот» получается, если строить кривые Коха внутрь исходного равностороннего треугольника.

Линии Чезаро. Вместо равносторонних треугольников используются равнобедренные с углом при основании от 60° до 90°. На рисунке угол равен 88°.


Квадратный вариант. Тут достраиваются квадраты.



Похожие публикации