我有一个3D立方贝塞尔曲线列表,这样曲线相互连接并关闭一个循环。
我正在寻找一种从贝松线曲线创建曲面的方法。最终我想对表面进行三角测量并将其呈现在图形应用程序中。
是否存在表示三次贝塞尔曲线段闭合路径的算法?
答案 0 :(得分:1)
看起来你只知道表面细节的一部分(由贝塞尔曲线给出),你要从中推断出表面。作为一个简单的例子,我想象一堆3D中的圆圈,其中心和半径将被重建为一个球体。
如果是这种情况,您可以使用level sets。对于水平集,您可以定义一组输入参数,这些参数定义外部因素对表面施加的力和表面的“张力”。
粗略地说,水平集定义了表面随着时间的推移而展开(或收缩)的行为。当它扩展时,它会尝试在满足其他边界条件的同时保持它smoothness
- 就像在这种情况下“粘住”圆圈一样。因此,如果你想要一堆圆圈的球体,那么圆圈会施加很大的力量,而表面也会非常紧张。
Physbam有一个关卡集的开源实现。
CGAL和PCL还提供了许多方法,可以根据点集和隐式曲面等事物生成曲面。您可以根据自己的需要调整其中一种。
如果您想自己实施算法,可以查看他们使用的算法。我认为其中至少有一个使用Poisson Surface Reconstruction算法。