Я пытаюсь создать интерактивное трехмерное представление ячеек, которые определяются пересечением произвольных поверхностей. Мне трудно понять, как создать из этого сетку (или есть что-то лучше, чем сетка, к которой я должен стремиться для представления трехмерных объемов?). Каждая поверхность s задается аналитическим выражением для плоскости, сферы, цилиндра, конуса и т. д. как s = f(x,y,z) = 0, например, здесь:
Для каждой ячейки у меня есть список поверхностей и значение +/- для каждой поверхности. При этом легко определить, лежит ли точка x, y, z внутри ячейки, подставив эту точку в уравнение для каждой из ограничивающих поверхностей, и если результат + для всех + поверхностей и - для всех - поверхностей точка лежит внутри. Очевидно, что если результат равен нулю для любой поверхности, то точка лежит на этой поверхности.
Я могу протестировать тысячи точек сетки, отмечая для каждой ячейки те точки, которые лежат внутри этой ячейки, а затем используя самые внешние из этих точек, чтобы создать сетку для этой ячейки. Однако у меня тысячи ячеек, и этого просто недостаточно быстро. Многие ячейки очень маленькие или с низким соотношением сторон по сравнению с другими, поэтому мне понадобилась бы очень мелкая сетка точек, если бы я собирался сделать это таким образом.
Может ли кто-нибудь предложить эффективный способ помещения ячеек, определенных таким образом, в статическую 3D-модель? Есть ли какая-нибудь библиотека, которая работает с такой спецификацией геометрии и может создавать для меня 3D-сетки? Я упускаю что-то очевидное?
Спасибо, Ник