eryar

PipeCAD - Plant Piping Design Software.
RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
posts - 603, comments - 590, trackbacks - 0, articles - 0

OpenCASCADE - 曲线自交

Posted on 2023-12-02 12:21 eryar 阅读(360) 评论(0)  编辑 收藏 引用 所属分类: 2.OpenCASCADE

OpenCASCADE - 曲线自交

1 Introduction

OpenCASCADE为二维曲线提供了求交及自交的类 Geom2dAPI_InterCurveCurve:当传入一个二维几何曲线时可以计算自交self-intersections。但是没有提供直接的三维几何曲线求交的类,也没有直接的计算自交的类。有人同学问OpenCASCADE有没有三维曲线自交的功能,其实理解两个Edge求交算法后,可以自己实现一个自交函数。

2 Self-Intersection

因为OpenCASCADE中两条三维曲线求交的类是IntTools_EdgeEdge,其实现原理是基于包围盒的分割法。基于这个分割递归思想,实现自交也可以参考这个思路。算法的流程为:输入一条要计算自交的边Edge,对边进行离散采样,将采样得到的每段曲线的包围盒生成BVH进行相交检测,将BVH中包围盒相交的两条曲线调用IntTools_EdgeEdge来计算相交。

离散得到的曲线段会比较多,如果用两个循环来检测两两曲线段的相交情况性能差,可以引入BVH提高性能。

3 Test

可以通过插值Interpolate来构造曲线测试,指定几个自交点来构造插值曲线。计算结果如下图所示:

与曲线求交原理类似,都是使用离散的方法,可以思考一下数值算法如何处理。


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理