русс | укр

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

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

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

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


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

Драконова ломаная


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


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

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

 

 

Предположим, что угол в каждом сгибе один и тот же. Обозначим этот угол через . Заметим, что на каждой вкладке мы поварачиваем либо влево либо вправо. Поэтому введём параметр , который принимает значение 1 когда мы поварачиваем влево и -1, когда вправо. Имеем:

Тогда

Следовательно, имеет следующие правила:

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

На рисунке ниже приведена ломаная с .

 

А если положить , то получим дракон Хартера-Хейтуэя.

 

Можно также немного закруглять углы.

program Dragon; uses Graph, Crt; const c = 1024*16; d = 3; da =pi/2;var i : Integer; gd, gm : Integer; a, x, y : Real; procedure Lineto1(x, y, l, u : Real); begin Line(Round(x), Round(y), Round(x + l*cos(u)), Round(y - l*sin(u)));end; function Opra(n : Integer) : Integer; label nach;var j : Integer;begin j := n; nach: if (j - 1) mod 4 = 0 then Opra := -1 else if (j-3) mod 4 = 0 then Opra := 1 else begin j:=j div 2; goto nach; end;end; begin gd := Detect; InitGraph(gd,gm,'e:\bp\bgi'); x := 150; y := 150; a := pi/2; for i := 1 to c + 1 do begin Lineto1(x,y,d,a); x := x + d*cos(a); y := y - d*sin(a); a := a - da*Opra(i); end; ReadKey; CloseGraph;end.

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



Для построения дракона Хартера-Хейтуэя с помощью IFS, используются следущие преобразования:

Dragon_2 { 0.5 -0.5 0.5 0.5 0 0 0.5-0.5 -0.5 0.5 -0.5 1.5 -0.5 0.5}

 

 

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

 

 

Dragon_3 { 0.5 -0.5 0.5 0.5 0 0 0.5-0.5 0.5 -0.5 -0.5 1.5 0.5 0.5}

 



<== предыдущая лекция | следующая лекция ==>
Треугольник Серпинского | Множество Мандельброта.


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


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

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

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


 


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

 
 

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

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