Как я могу сгенерировать сетку для части поверхности с установленным уровнем с помощью CGAL?
Это вопрос об инструменте создания трехмерной поверхностной сетки в CGAL.
Согласно документации, мне нужно предоставить поверхность для создания сетки в неявной форме как поверхность с нулевым уровнем. Похоже, это накладывает ограничение на многообразие входной поверхности.
Эта проблема
В моем случае использования мне нужно сгенерировать сетку для небольшой "области" неявной поверхности "родительского" коллектора большего размера. Сама "область" не является многообразной, потому что она не охватывает объем.
Я могу придумать способ решения этой проблемы:
- Создайте сетку для всей "родительской" поверхности, а затем
- Извлеките сетку, соответствующую требуемой "области".
Однако я хочу избежать этого по соображениям производительности.
Как мне поступить с этим? Доступен ли какой-либо другой модуль в CGAL, который может помочь мне в этом?
1 ответ
Поскольку ваша поверхность является неявной, вы можете легко создать функцию, которая представляет пересечение этой неявной поверхности с неявным объемом, например сферой, ограничивающей рамкой или полупространством.
Предположим, например, что у вас есть уравнение сферы:
auto sphere(double x, double, y, double z) {
return x*x + y*y + z*z - 1;
}
тогда вы можете вычислить пересечение с полупространством, например:
auto half_space(double x, double y, double z) {
return y - x > 0 ? -1. : -1.;
}
auto intersection(double, x, double y, double z) {
if(half_space(x, y, z) > 0) return 1.
else return sphere(x, y, z);
}