Генерация треугольной сферы
Описание проекта: Генерация треугольной сферы
Цель проекта
Проект направлен на создание трехмерной модели треугольной сферы, состоящей из множества треугольных пирамид, расположенных по кругу. Это позволяет визуализировать геометрическую структуру, основанную на равномерном распределении треугольников по поверхности сферы.
Описание модулей
-
Модуль
triangular_ball(radius, divisions)
- Параметры:
radius
: радиус сферы, который определяет расстояние от центра до основания треугольных пирамид.divisions
: количество треугольных пирамид, которые будут размещены по окружности.
- Функциональность:
- Цикл проходит по количеству
divisions
, вычисляя угол для каждой пирамиды. - Каждая пирамида вращается вокруг оси Z на заданный угол и перемещается на расстояние, равное радиусу.
- Вызов модуля
triangular_pyramid(radius)
для создания треугольной пирамиды на каждой позиции.
- Цикл проходит по количеству
- Параметры:
-
Модуль
triangular_pyramid(radius)
- Параметры:
radius
: радиус основания треугольной пирамиды.
- Функциональность:
- Определяет вершины треугольной пирамиды, используя заданный радиус.
- Создает полигоны (faces) для каждой грани пирамиды, формируя ее трехмерную структуру.
- Пирамида состоит из 5 вершин и 8 граней, что делает ее геометрически интересной.
- Параметры:
Применение
Проект может быть использован в различных областях, таких как:
- Графический дизайн: для создания уникальных визуальных эффектов и объектов.
- Образование: для демонстрации геометрических концепций и свойств трехмерных фигур.
- Игровая индустрия: для генерации объектов и окружений с использованием треугольной геометрии.
Заключение
Данный проект представляет собой интересный пример использования параметрического моделирования для создания сложных геометрических форм. Он демонстрирует, как простые геометрические элементы могут быть объединены для формирования более сложных структур, что открывает возможности для дальнейших исследований и разработок в области 3D-моделирования.
module triangular_ball(radius, divisions) {
for (i = [0 : divisions - 1]) {
angle = i * 360 / divisions;
rotate([0, 0, angle])
translate([radius, 0, 0])
triangular_pyramid(radius);
}
}
module triangular_pyramid(radius) {
points = [
[0, 0, radius],
[radius * sqrt(3) / 2, -radius / 2, 0],
[radius * sqrt(3) / 2, radius / 2, 0],
[-radius * sqrt(3) / 2, radius / 2, 0],
[-radius * sqrt(3) / 2, -radius / 2, 0]
];
for (i = [0 : 4]) {
polyhedron(
points = points,
faces = [
[0, 1, 2],
[0, 2, 3],
[0, 3, 4],
[0, 4, 1],
[1, 2, 3],
[1, 3, 4],
[4, 1, 2],
[4, 2, 3]
]
);
}
}
triangular_ball(10, 12);