Хорошо, давайте выполним задание 2 из учебника, создав трафарет ёлки в OpenSCAD.
Задание 2: Создайте трафарет ёлки, изображённый на рисунке 8.
Для создания трафарета ёлки мы будем использовать команду `polygon()`, как указано в подписи к рисунку. Команда `polygon()` принимает список точек, которые определяют вершины многоугольника.
Давайте определим координаты вершин ёлки по рисунку 8. На рисунке видно, что сетка имеет шаг 10 единиц.
Вершины ёлки (начиная с левого нижнего угла и двигаясь по часовой стрелке):
1. Левый нижний угол ствола: (20, 0)
2. Правый нижний угол ствола: (50, 0)
3. Правый верхний угол ствола: (50, 10)
4. Левый верхний угол ствола: (20, 10)
5. Правый нижний угол первой ветки: (60, 10)
6. Правый верхний угол первой ветки: (60, 30)
7. Вершина первой ветки: (70, 30)
8. Правый нижний угол второй ветки: (70, 50)
9. Правый верхний угол второй ветки: (70, 70)
10. Вершина ёлки: (45, 80)
11. Левый верхний угол второй ветки: (20, 70)
12. Левый нижний угол второй ветки: (20, 50)
13. Вершина первой ветки: (10, 50)
14. Левый верхний угол первой ветки: (10, 30)
15. Левый нижний угол первой ветки: (20, 30)
16. Левый верхний угол ствола: (20, 10) (эта точка уже была, но для замкнутого многоугольника её нужно повторить, если мы идём по периметру)
Давайте перечислим точки в порядке обхода, чтобы создать замкнутый многоугольник:
\[
\begin{array}{l}
(20, 0) \\
(50, 0) \\
(50, 10) \\
(60, 10) \\
(60, 30) \\
(70, 30) \\
(70, 50) \\
(70, 70) \\
(45, 80) \\
(20, 70) \\
(20, 50) \\
(10, 50) \\
(10, 30) \\
(20, 30) \\
(20, 10)
\end{array}
\]
Теперь запишем это в OpenSCAD.
// Задание 2: Создание трафарета ёлки с помощью команды polygon()
// Определяем список вершин ёлки
// Координаты взяты с рисунка 8, шаг сетки 10 единиц.
// Обход вершин осуществляется по часовой стрелке, начиная с левого нижнего угла ствола.
polygon(points = [
[20, 0], // 1. Левый нижний угол ствола
[50, 0], // 2. Правый нижний угол ствола
[50, 10], // 3. Правый верхний угол ствола
[60, 10], // 4. Правый нижний угол первой ветки
[60, 30], // 5. Правый верхний угол первой ветки
[70, 30], // 6. Вершина первой ветки (правая)
[70, 50], // 7. Правый нижний угол второй ветки
[70, 70], // 8. Правый верхний угол второй ветки
[45, 80], // 9. Вершина ёлки
[20, 70], // 10. Левый верхний угол второй ветки
[20, 50], // 11. Левый нижний угол второй ветки
[10, 50], // 12. Вершина первой ветки (левая)
[10, 30], // 13. Левый верхний угол первой ветки
[20, 30], // 14. Левый нижний угол первой ветки
[20, 10] // 15. Левый верхний угол ствола (замыкаем контур)
]);
// Для создания 3D-трафарета (как на правом изображении рисунка 8),
// можно использовать команду linear_extrude().
// Например, выдавим нашу 2D-ёлку на 5 единиц по оси Z.
/*
linear_extrude(height = 5, center = false, convexity = 10) {
polygon(points = [
[20, 0],
[50, 0],
[50, 10],
[60, 10],
[60, 30],
[70, 30],
[70, 50],
[70, 70],
[45, 80],
[20, 70],
[20, 50],
[10, 50],
[10, 30],
[20, 30],
[20, 10]
]);
}
*/
Пояснения к коду:
// Задание 2: Создание трафарета ёлки с помощью команды polygon() - это комментарий, который объясняет, что делает этот блок кода. Комментарии начинаются с двух косых черт //.
polygon(points = [ ... ]); - это основная команда. Она создает двухмерный многоугольник.
points = [ ... ] - это параметр команды polygon(), который принимает список точек. Каждая точка сама по себе является списком из двух координат: [x, y].
- Внутри списка
points перечислены все вершины ёлки в определенном порядке. Важно перечислять их последовательно, чтобы OpenSCAD мог правильно соединить их линиями и создать замкнутую фигуру.
- Комментарии рядом с каждой точкой помогают понять, какая часть ёлки соответствует этой координате.
- Закомментированный блок с
linear_extrude() показывает, как можно превратить 2D-трафарет в 3D-объект, если это потребуется. Для этого 2D-фигура (в нашем случае polygon()) помещается внутрь linear_extrude(). Параметр height задает толщину выдавливания.
Чтобы увидеть результат:
- Откройте OpenSCAD.
- Скопируйте и вставьте код в окно редактора OpenSCAD.
- Нажмите кнопку "Предварительный просмотр" (F5) или "Рендеринг" (F6), чтобы увидеть созданную ёлку.
В результате вы увидите двухмерное изображение ёлки, точно соответствующее рисунку 8. Если раскомментировать блок с
linear_extrude(), то вы получите трёхмерную модель трафарета.