Мастер класс.
Формирование фракталов с помощью макросов

на языке  *.
vbs (или *.js) и методов авторской системы Вектор

Предыдущее занятие 

Итак фрактал можно охарактеризовать как процесс рекурсивного замещения в чём-то, чего-то, чем-то с прицепом.

в  чём-то –полилинии, поверхности, 

чего-то - отрезки полилинии, ячейки поверхности

чем-то  - полилинии, полиповерхности и т.п.

с прицепом  - любой объект.

Метод:

FractalTopolyline(short i_obj1, short i_obj2, short i_obj3, short b2obj, short bScale, short istep)

Где:

short i_obj1 генератор

short i_obj2 инициатор (группа или полилиния автоматически выбираются)

short i_obj3 - прицеп  номер в структуре

short b2obj =  прицеп - 1 - есть прицеп, 2-нет прицепа 

short bScale =1 - нет масштаба 2 - есть масштаб,

short istep - шаг (число) через которое выполняется замещение

short nmb (планируем) – номер отрезка для которого выполняется замещение

 

Проведем тестирование

Тест 1. Выполнить замещение отрезков в полилинии (инициатор) другой полилинией (зигзагом) (генератор) – два объекта задаем в диалоге.

 

МК Фрактал-замещение 1.vbs на входе иницатор (куда) и генератор (что)

VBSMsg "Замещение отрезков в полилинии (или группы) другой полилинией с прицепом или без прицепа"

n1 = LastNmb

FractalTopolyline n1, n1-1, 2, 1, 1, 1

   

  -> ->

Слева задано, в центре МК отработала, справа - только фрактал 

 

Тест 2. Выполнить замещение отрезков полилинии другой полилинией с прицепом

Прицеп может – любой объект (возьмем портрет Пушкина в dxf-формате), генератор здесь полилиния (отрезок-полилиния), определяющая расположение объекта в замещаемом пространстве.

  FractalTopolyline n1-1, n1-2, n1, 1, 1, 1  ' тест 2 прицеп с Пушкиным

 

 

Тест 3. Выполнить замещение отрезков полилинии другой полилинией с прицепом (без масштаба).

FractalTopolyline n1-1, n1-2, n1, 1, 0, 1    ' тест 3 масштаб не меняется.

 

 

Тест 4. Выполнить замещение отрезков полилинии другой полилинией с прицепом (без масштаба) с шагом.

FractalTopolyline n1-1, n1-2, n1, 1, 2, 1    ' тест 3 масштаб не меняется (c шагом = 2(1+1)).

 

В структуре не нужное выключить (удалить),

Тестирование инициатор, как группа – аналогично полилинии.

 

Примеры.

Фрактал Серпинского методу FractalTopolyline

 

К последней группе в структуре можно продолжить фрактал

  

Получен за три итерации, справа 3D без сторон треугольника

 

Фрактал Леви с помощью МК и метода. Хотя, сначала соберем его в диалоге, используем «прицеп».

Форма правильная получилась, однако из 5 отдельных частей*

В МК можно контур 5 частей соединить одной линией, но как говорится фокус не удался – прицеп попробуем задавать с отверстием, а внутри отверстия линия - генератор.  

 

       

Как видим (картинка слева), не получилось*.

Справа орел в качестве прицепа с генератором перескочил на инициатор 

 

      Есть идея, как проблему обойти. Добавить замещение полилинии отрезка в другой полилинии по номеру. В диалоге это в принципе лишнее – задавай генератор. Хотя стоп! генератор может быть сложная линия и она автоматически «вшивается» в инициатор – это нужная задача в многих приложениях в медицине шунтирование и прочего вживления. Так что нужна это задача и в диалоге. В МК в цикле применяя, можно конечно больше накрутить, и в случае и прицепа задача полезная и понятная. Особенно в случае сборки – направляй разные детали в разные места, получишь сборочную единицу. Причем раз написал МК – потом ее применяй постоянно. Эту проблему соискатели по кафедре в аспирантуру монголы статью написали: «Мониторинг многоуровневой структуризации в морской практике Монголии»  см. здесь. 

К 3D-фрактальной геометрии  см здесь