Формулите, които се ползват, се учат в първи курс в дисциплината "Линейна алгебра" и по-точно операциите с матрици и линейни преобразувания.
За теорията - тя е 90% това, което се изучава в първи курс по ЛААГ, а останалите 10% ги има документирани в HELP менюто. Отделно, макар че минаха 8 години, все още помня и теорията и формулите и с удоволстве ще помагам където трябва, което е и идеята.
IFS теорията ни учи как да конструираме IFS фрактали, а теорията за Хаусдорфовото пространство ни дава математическия апарат, с който да определим кога да спрем генериращите итерации (Хаусдорфовото разстояние между генерираните обекти X(t) и X(t+1) = 0).
Така че теорията не е много, нито е сложна. Няма нужда човек да е велик математик (аз самият не съм), за да си играе с фрактали.
Ето няколко линка:
http://en.wikipedia.org/wiki/Iterated_function_systemhttp://en.wikipedia.org/wiki/Hausdorff_distanceЕстествено, практическата реализация не следва едно към едно математическия модел (особено за Хаусдорфовото разстояние), но е необходимо човек да е наясно с теоретичната идея, за да и намери практически ефективен заместител.
Ще се опитам да дефинирам накратко какво трябва да съдържа обновената програма:
* Подробна Help система, по възможност на български и на английски (мисля си за CHM формат, ако е Desktop приложение или хубаво структуриран HTML ако е web) за теорията, която стои зад IFS фракталите. Матрици, операции с матрици (събиране и умножаване), IFS, Хаусдорфово пространство, Хаусдорфово разстояние, Attractor, Zero attractor, ...
* Модул за дефиниране/редакция на IFS матрици в интерактивен режим, т.е. потребителят да вижда ефектът от линейното преобразувание в момента на въвеждане на всеки коефицент (те са няколко коефицента за всяка дефинирана матрица)
или (по-добрият вариант) коефицентите да се определят динамично, след като потребителят е дефинирал линейното преобразувание чрез "разтягане", "мащабиране" и "ротиране" на матричния обект, който е най-обикновен квадрат. Т.е. потребителят "деформира" някакъв начален обект и въз основа на деформациите се определят коефицентите. Курсовият проект по компютърна графика в трети курс (ако не се лъжа) много би помогнал за реализацията на тази част.
* Модул за генериране на IFS фрактал, спрямо предварително зададено множество от IFS матрици (виж горе) и начална картинка (BMP, JPG или каквото и да е). Модулът трябва да позволява запазване на всяка итерация (новополучена картинка), както и на крайния attarctor, било то нулев или не.
* Модул за визуализация на предварително запазен IFS фрактал, който позволява проследяване на всяка стъпка от процеса на генериране.
Това са най-важните модули. Текущата система включва още модул за създаване на начална картинка, който е излишен в съвремения свят (Paint върши същата работа), както и Demo модул, който също е излишен, ако към системата се влкючат няколко предварително дефинирани, добре известни IFS матрици.