Данный проект представляет собой интерактивную визуализацию, демонстрирующую распределение механических напряжений в композитном материале под нагрузкой. Композит моделируется как матрица (связующее вещество) с армирующими волокнами.
Программа реализована на JavaScript с использованием графической библиотеки p5.js и позволяет:
- Наглядно наблюдать, как ориентация волокон влияет на распределение нагрузки
- Изменять уровень и направление приложенной нагрузки
- Добавлять новые волокна в реальном времени
- Визуализировать критические зоны разрушения
Композитные материалы широко применяются в аэрокосмической, автомобильной и строительной отраслях благодаря их высокой удельной прочности. Ключевой принцип работы композитов заключается в том, что армирующие волокна эффективно воспринимают нагрузку только при ориентации вдоль направления её приложения.
В данной модели реализованы следующие упрощения:
- Матрица считается однородной средой
- Волокна работают только на растяжение/сжатие
- Напряжение в волокне зависит от угла между его ориентацией и направлением нагрузки
- При достижении критического напряжения волокно может разрушиться
- Стрелка вверх/вниз - увеличение/уменьшение нагрузки (0-100%)
- Стрелка влево/вправо - изменение направления нагрузки (0-180°)
- Клик мыши - добавление нового волокна в точке клика
- 🟢 Зелёный - низкое напряжение (0-50%)
- 🟡 Жёлтый - среднее напряжение (50-75%)
- 🔴 Красный - высокое напряжение (75-100%)
- 🔴 Красный кружок - локальное разрушение волокна (напряжение >80%)
- 🔵 Голубые линии - трещины в матрице (появляются при нагрузке >50%)
- Красная стрелка - направление приложенной нагрузки
let fibers = []; // Массив объектов-волокон
let stress = 0; // Уровень нагрузки (0-100%)
let loadAngle = 0; // Угол направления нагрузкиКаждое волокно представлено объектом со свойствами:
x, y - координаты центра
length - длина волокна
angle - угол ориентации
stress - текущее напряжение
color - цвет (зависит от напряжения)
broken - флаг разрушенияupdateFiber(f)
Вычисляет напряжение в волокне на основе угла между направлением волокна и направлением нагрузки:
if (angleDiff < PI/4) {
f.stress = stress * (1 - angleDiff / 1.5);
} else {
f.stress = stress * 0.3;
}
drawFiber(f)
Отрисовывает волокно с учётом его ориентации и цвета:
Использует push()/pop() для изоляции трансформаций
Рисует прямоугольник, повёрнутый на угол волокна
Добавляет индикатор разрушения при высоком напряжении
drawMatrix()
Отрисовывает матрицу с трещинами (при нагрузке >50%)
drawLoadDirection()
Рисует стрелку, показывающую направление нагрузкиПроект демонстрирует следующие важные концепции материаловедения:
-
Анизотропия механических свойств - зависимость прочности от направления
-
Концентрация напряжений - неравномерное распределение нагрузки
-
Критерии разрушения - условия, при которых происходит повреждение
-
Роль ориентации армирующих элементов - важность правильного расположения волокон
Технические требования:
-
Современный веб-браузер (Chrome, Firefox, Edge)
-
Поддержка JavaScript
-
Библиотека p5.js (включается автоматически)
Вариант 1: Онлайн редактор p5.js Перейдите на https://editor.p5js.org/
-
Создайте новый проект
-
Скопируйте код и вставте в редактор
-
Нажмите кнопку "Play"
-
Учёт взаимодействия между волокнами
-
Добавление различных типов волокон (разная прочность)
-
Моделирование пластической деформации матрицы
-
Сохранение/загрузка конфигураций
-
Статистика повреждений
-
Графики зависимости напряжения от угла
-
Слайдеры для точной настройки параметров
-
Возможность изменения свойств отдельных волокон
-
Режим пошаговой симуляции
JavaScript - основной язык программирования
p5.js - библиотека для творческого кодирования
HTML5 Canvas - технология отрисовки графики
Смирнов Егор Дмитриевич
Проект распространяется под лицензией MIT. Подробности в файле LICENSE.
Данный проект был разработан в рамках учебного курса по программированию.
