Предполагая, что вы хотите выдавливать на расстояние z, вам нужно выполнить следующие шаги:
0) пусть n будет исходным числом вершин (4 в вашем примере)
1)Для каждой вершины в вашем массиве вершин, добавьте (0,0, z) к нему и добавьте результат в ваш массив вершин, в общей сложности 2 * n вершин.Итак, для вашего примера, вы добавите вершины (0,0, z), (10,0, z), (10,10, z), (0,10, z) к вашему массиву вершин, в общей сложностииз 2 * 4 = 8 вершин.
2) Создайте список краевых (в отличие от внутренних) ребер для вашей исходной сетки.Для этого создайте список всех ребер треугольника (3 ребра, идущие по часовой стрелке для каждого треугольника).Затем удалите пары равных, но противоположных ребер (это внутренние ребра).Для вашего примера вы начнете с 6 ребер, и в итоге получите 4 ребра после удаления пары ребер (3,1) и (1,3).
3) для каждого треугольника (a, b,в) в вашем списке треугольников создайте соответствующий треугольник (a + n, b + n, c + n).Это будут выдавленные грани
4) Наконец, вы хотите создать стороны вашей выдавленной формы.Для каждого ребра (a, b) в списке ребер границ, который вы создали на шаге 2, добавьте треугольники (a, b, b + n) и (b + n, a + n, a)
Это.Если вы не опечатки с моей стороны и опечаток с вашей стороны, у вас должна быть желаемая сетка.