Интерактивный веб-интерфейс для визуализации и изучения 7 математических фракталов. Приложение построено на Spring Boot с REST API и использует HTML5 Canvas для рендеринга.
mvn spring-boot:runmvn clean package
java -jar target/comp_graph-1.0-SNAPSHOT.jarЗапустите класс fractals.web.FractalWebApplication
Приложение будет доступно по адресу: http://localhost:8080
- Итеративная функция: f(z) = z² + c, z₀ = 0
- Интерактивность: Клик для увеличения области
- Параметры: Максимум итераций (10-500)
- Итеративная функция: f(z) = z² + c (константа)
- Интерактивность: Клик для увеличения области
- Параметры:
- C (действительная часть): -2.0 до 2.0
- C (мнимая часть): -2.0 до 2.0
- Максимум итераций: 10-500
- Рекурсивное деление треугольника
- Параметры: Глубина рекурсии (1-8)
- L-система с правилом F → F-F++F-F
- Параметры: Порядок рекурсии (0-6)
- Фрактальное дерево на основе теоремы Пифагора
- Параметры:
- Глубина рекурсии (1-15)
- Угол ветвления (0.1-1.5)
- Алгоритм Midpoint Displacement
- Параметры:
- Seed (1-99999)
- Шероховатость (0.1-1.5)
- Показатель Ляпунова для логистического отображения
- Синий = стабильность, Красный = хаос
- Параметры: Последовательность (A/B, например "AABAB")
- Выбор фрактала: Кликните на кнопку в боковой панели
- Изменение параметров: Используйте элементы управления в панели
- Рендеринг: Нажмите кнопку "🎨 Отрисовать"
- Сброс: Нажмите кнопку "🔄 Сброс" для возврата к начальным параметрам
- Zoom (Мандельброт/Жюлиа): Кликните на области для увеличения в 3 раза
- Координаты: Отображаются при движении мыши по canvas
src/main/java/fractals/web/
├── FractalWebApplication.java # Главный класс приложения
├── FractalController.java # REST API для генерации фракталов
└── HomeController.java # Контроллер главной страницы
REST API эндпоинты:
GET /api/fractals/list- Список доступных фракталовPOST /api/fractals/mandelbrot- Генерация МандельбротаPOST /api/fractals/julia- Генерация ЖюлиаPOST /api/fractals/sierpinski- Генерация СерпинскогоPOST /api/fractals/lyapunov- Генерация Ляпунова
src/main/resources/
├── templates/
│ └── index.html # Главная страница
└── static/
├── css/
│ └── style.css # Стили
└── js/
├── fractal-engine.js # Движок рендеринга Canvas
└── app.js # Логика приложения
Модули JavaScript:
FractalEngine: Класс для рендеринга фракталов на Canvasapp.js: Управление UI, API запросы, обработка событий
- Spring Boot 2.7.18 - Web framework
- Spring Web - REST API
- Thymeleaf - Template engine
- Gson - JSON serialization
- HTML5 Canvas - Графический рендеринг
- Vanilla JavaScript - Без внешних зависимостей
- CSS3 - Gradient backgrounds, animations
- Множество Мандельброта
- Множество Жюлиа
- Треугольник Серпинского
- Фрактал Ляпунова
- Снежинка Коха
- Дерево Пифагора
- Фрактальный ландшафт
Файл: src/main/resources/application.properties
server.port=8080
spring.application.name=Fractal Explorer
spring.thymeleaf.cache=false
logging.level.fractals.web=INFO<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency># Список фракталов
curl http://localhost:8080/api/fractals/list
# Мандельброт
curl -X POST http://localhost:8080/api/fractals/mandelbrot \
-H "Content-Type: application/json" \
-d '{"width":800,"height":600,"xMin":-2.5,"xMax":1.0,"yMin":-1.2,"yMax":1.2,"maxIterations":100}'
# Серпинский
curl -X POST http://localhost:8080/api/fractals/sierpinski \
-H "Content-Type: application/json" \
-d '{"depth":6}'Откройте в браузере: http://localhost:8080
- Адаптивный дизайн - Grid layout с боковой панелью
- Gradient backgrounds - Красивый фиолетовый градиент
- Индикатор загрузки - Spinner во время генерации
- Координаты в реальном времени - Для Мандельброта/Жюлиа
- Интерактивный zoom - Клик для увеличения области
- Цветовая схема HSV - Плавные цветовые переходы
- Изометрическая проекция - Для фрактального ландшафта
- Выберите "Множество Мандельброта"
- Установите Максимум итераций: 200
- Нажмите "Отрисовать"
- Кликните на интересную область для zoom
- Повторяйте для более детального просмотра
- Выберите "Множество Жюлиа"
- Измените C (действительная): -0.4
- Измените C (мнимая): 0.6
- Нажмите "Отрисовать"
- Экспериментируйте с разными значениями C
- Выберите "Фрактальный ландшафт"
- Измените Seed для нового ландшафта
- Настройте Шероховатость (0.5 = гладкий, 1.5 = грубый)
- Нажмите "Отрисовать"
- Canvas размер фиксирован (800x600)
- Высокие значения итераций могут замедлить генерацию
- Нет сохранения изображений (можно добавить)
- Zoom работает только для Мандельброта/Жюлиа
- Сохранение фракталов в PNG
- WebGL для ускорения рендеринга
- 3D визуализация некоторых фракталов
- История параметров (undo/redo)
- Анимация изменения параметров
- Экспорт параметров в JSON
Учебный проект - Computer Graphics Course 2025
Автор: Computer Graphics Project Team Дата: 2025-10-05 Версия: 1.0