B-сплайн поверхности естественным образом ограничены. Поэтому, когда вы говорите, что поверхность B-сплайна без какой-либо границы, я думаю, вы говорите о необрезанных поверхностях B-сплайна, а то, что вы хотите сделать, - это возможность нарисовать обрезанные поверхности B-сплайна.
Рисование поверхности обычно включает в себя тесселяцию, которая превращает сплошную поверхность в треугольную сетку, состоящую из множества маленьких треугольников. Поэтому вам необходимо будет сделать следующее:
- Найти кривую параметров поверхности (кривую SP) граничных кривых. Кривая SP представляет собой двумерную кривую, определенную в параметрической области поверхности B-сплайна.
- Тесселировать 2D-область в параметрической области, охватываемой всеми SP-кривыми.
- Переместите 2D тесселяцию в параметрическую область обратно в 3D-пространство, чтобы найти трехмерную треугольную сетку.
Шаг 1 и этап 2 являются нетривиальными. Таким образом, на самом деле это будет большая задача, если у вас нет какой-либо 3D-библиотеки в вашем распоряжении и вы должны все реализовать самостоятельно.
Спасибо за ваш ответ ~~, это очень помогает мне. Кстати, у вас есть рекомендованная библиотека 3D? Я надеюсь, что библиотека с открытым исходным кодом и на C++, я рад проследить исходный код. –
Извините. Я не знаком с 3D-библиотеками с открытым исходным кодом. – fang
Довольно старый вопрос, но я бы предложил вам взглянуть на OPENCASCADE (www.opencascade.com) - он мощный и широко используется в промышленности. Если вы хотите начать быстро, то вы можете проверить, что это привязки python: http://www.pythonocc.org/ Кстати, он поддерживает файлы STEP. – Fernando