русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Снежинка Коха


Дата добавления: 2013-12-23; просмотров: 1820; Нарушение авторских прав


Геометрические фракталы.

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

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

 

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

Кривую Коха можно также построить с помощью двух СИФ-преобразований:

В формате FRACTINT эти преобразования запишутся следующим образом:

Curve_Koch { 0.5 0.288675 0.288675 -0.5 0 0 0.5 0.5 -0.288675 -0.288675 -0.5 0.5 0.288675 0.5}

Кривая Коха имеет бесконечную длину. Кроме того, кривая Кох состоит из четырёх равных частей, каждая из которых подобна всей кривой с коэффициентом подобия 1/3. Отсюда следует, что каждая часть кривой имеет бесконечную длину. Также эта кривая нигде себя не пересекает, так как достраиваемые треугольники каждый раз достаточно малы и никогда не "сталкиваются" друг с другом.



Вариации на тему кривой Коха

Три копии кривой Коха, расположенные на сторонах правильного треугольника, образуют замкнутую кривую, называемую снежинкой Коха.

 

Построение можно производить на сторонах квадрата.

 

 

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

program Koch1; uses CRT, Graph; var gd, gm: Integer; procedure Draw(x, y, l, u : Real; t : Integer); procedure Draw2(Var x, y: Real; l, u : Real; t : Integer); begin Draw(x, y, l, u, t); x := x + l*cos(u); y := y - l*sin(u);end; begin if t > 0 then begin l := l/3; Draw2(x, y, l, u, t-1); Draw2(x, y, l, u+pi/3, t-1); Draw2(x, y, l, u-pi/3, t-1); Draw2(x, y, l, u, t-1); end else Line(Round(x), Round(y), Round(x+cos(u)*l), Round(y-sin(u)*l))end; begin gd := Detect; InitGraph(gd, gm, 'c:\bp\bgi'); Draw(410, 10, 400, -pi, 4); Draw(10, 410, 400, 0, 4); Draw(10, 10, 400, -pi/2, 4); Draw(410, 410, 400, pi/2, 4); ReadKey; CloseGraphend.program Koch2; uses CRT, Graph; var gd, gm: Integer; procedure Draw(x, y, l, u : Real; t : Integer); procedure Draw2(Var x, y: Real; l, u : Real; t : Integer); begin Draw(x, y, l, u, t); x := x + l*cos(u); y := y - l*sin(u);end; begin if t > 0 then begin l := l/3; Draw2(x, y, l, u, t-1); Draw2(x, y, l, u+pi/3, t-1); Draw2(x, y, l, u-pi/3, t-1); Draw2(x, y, l, u, t-1); end else Line(Round(x), Round(y), Round(x+cos(u)*l), Round(y-sin(u)*l))end; begin gd := Detect; InitGraph(gd, gm, 'c:\bp\bgi'); Draw(210, 8, 400, -2*pi/3, 4); Draw(10, 354, 400, 0, 4); Draw(410, 354, 400, 2*pi/3, 4); ReadKey; CloseGraphend.program Koch3; uses CRT, Graph; var gd, gm: Integer; procedure Draw(x, y, l, u : Real; t : Integer); procedure Draw2(Var x, y: Real; l, u : Real; t : Integer); begin Draw(x, y, l, u, t); x := x + l*cos(u); y := y - l*sin(u);end; begin if t > 0 then begin l := l/3; Draw2(x, y, l, u, t-1); Draw2(x, y, l, u+pi/3, t-1); Draw2(x, y, l, u-pi/3, t-1); Draw2(x, y, l, u, t-1); end else Line(Round(x), Round(y), Round(x+cos(u)*l), Round(y-sin(u)*l))end; begin gd := Detect; InitGraph(gd, gm, 'c:\bp\bgi'); Draw(10, 354, 400, pi/3, 4); Draw(410, 354, 400, pi, 4); Draw(210, 8, 400, -pi/3, 4); ReadKey; CloseGraphend.

Снежинку Коха Можно получить используя следующие СИФ (формат FRACTINT):

Island_Koch { 0.333 0.000 0.000 0.333 -0.006 7.325 0.084 -0.167 0.288 -0.288 -0.167 2.013 3.823 0.083 -0.167 -0.288 0.288 -0.167 -2.031 3.816 0.083 0.167 0.288 -0.288 0.167 2.031 6.136 0.084 -0.333 0.000 0.000 -0.333 0.006 2.651 0.083 0.167 -0.288 0.288 0.167 -2.025 6.153 0.083 0.333 0.000 0.000 0.333 -0.006 1.325 0.084 0.167 0.288 -0.288 0.167 -3.177 3.148 0.083 -0.167 0.288 -0.288 -0.167 -3.183 6.823 0.083 -0.333 0.000 0.000 -0.333 -0.006 8.651 0.084 0.167 -0.288 0.288 0.167 3.159 3.165 0.083 -0.167 -0.288 0.288 -0.167 3.177 6.804 0.083}

или

Island_Koch_2 { 0.333 0.000 0.000 0.333 -1.998 6.785 0.110 0.333 0.000 0.000 0.333 -1.998 -0.139 0.110 0.333 0.000 0.000 0.333 1.998 -0.139 0.110 0.333 0.000 0.000 0.333 1.998 6.785 0.110 0.333 0.000 0.000 0.333 -3.978 3.317 0.110 0.333 0.000 0.000 0.333 4.002 3.317 0.110 0.502 -0.290 0.290 0.502 1.452 2.442 0.340}


<== предыдущая лекция | следующая лекция ==>
Системы итерируемых функций. | Треугольник Серпинского


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.