首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找3D NURBS曲面参数范围的边界框(轴向对齐

查找3D NURBS曲面参数范围的边界框(轴向对齐
EN

Stack Overflow用户
提问于 2010-02-24 01:14:50
回答 1查看 946关注 0票数 1

我会提前道歉,以防这是显而易见的;我一直无法找到合适的术语放入谷歌。

我想要做的是在修剪的NURBS曲面上找到任意参数范围的边界体积(AABB就足够好了)。例如,(u,v)介于(0.1,0.2)和(0.4,0.6)之间。

编辑:如果它有帮助,如果该方法将参数区域完全限制在下面段落中定义的边界区域内,对我来说是很好的。我对细分这些区域很感兴趣。

在阅读了这篇论文( http://www.cs.utah.edu/~shirley/papers/raynurbs.pdf )中的这一段后,我开始思考这一点,它解释了如何创建具有相对于曲面程度的深度的包围体的树:

代码语言:javascript
复制
The convex hull property of B-spline surfaces guarantees that the surface is contained in the convex hull of its control mesh.
As a result, any convex objects which bound the mesh will bound the underlying surface. We can actually make a stronger
claim; because we closed the knot intervals in the last section [made the multiplicity of the internal knots k − 1], each nonempty
interval [ui; ui+1)  [vj; vj+1) corresponds to a surface patch which is completely contained in the convex hull of
its corresponding mesh points. Thus, if we produce bounding volumes for each of these intervals, we will have completely
enclosed the surface. We form the tree by sorting the volumes according tothe axis direction which has greatest extent across the bounding volumes, splitting the data in half, and repeating the process.

谢谢!肖恩

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-24 01:40:10

您将需要切开一个较小的NURBS曲面,该曲面仅覆盖您感兴趣的参数范围。使用你的例子,我认为这意味着你在u参数在0.1到0.4之间的区域。设Pu是该参数中样条曲线的阶数(三次样条曲线的Pu = 3)。你需要执行"knot insertion“(这是你的谷歌搜索词)来得到位于u=0.1和u=0.4的Pu度的纽结。对v参数做同样的事情,得到Pv为0.2和0.6的纽结。节点插入过程将修改(并添加到)控制点阵列。这涉及到一些记账工作,但您可以找到确定参数面片中曲面的control_points,该参数面片是在插入的节点之间隔离的。然后,凸起属性表示曲面由这些控制点限定,因此您可以使用它们来确定边界体积。

我喜欢使用的NURBS参考是:“NURBS书”,由Les Piegl和Wayne Tiller所著。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2320171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档