首页 > 其他分享 >OpenCASCADE - 曲线自交

OpenCASCADE - 曲线自交

时间:2023-11-15 18:44:23浏览次数:39  
标签:求交 曲线 相交 OpenCASCADE 自交 BVH

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来构造曲线测试,指定几个自交点来构造插值曲线。计算结果如下图所示:

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

标签:求交,曲线,相交,OpenCASCADE,自交,BVH
From: https://www.cnblogs.com/opencascade/p/occt_edge_self_intersect.html

相关文章

  • 如何走出自己的第二曲线
    本来工作日一般都是更新技术文章的,都写好草稿了,看到有同学私聊问我关于发展副业和第二曲线的问题,一时感慨颇多,索性就聊聊这个话题吧。这两年经济很差,反应到求职市场特别是互联网行业,真的是惨不忍睹。降本增效,裁员的大刀挥舞起来就没消停过,但凡新增一个HC,分分钟几十上百份简历涌......
  • 利用Matlab提取图片中曲线数据
    ​在MATLAB中得到系统当前日期、时间也是经常用到的内容,由以下函数实现。1.生成指定格式日期和时间datestr-生成指定格式日期和时间,是字符型变量。>> datestr(now) %其中now是获取当前日期和时间ans=    30-Dec-200916:05:16其中输出格式可由用户指定,共有31种格式......
  • P-III曲线水文频率计算程序(方法)
    P-III曲线水文频率计算程序(方法) 最近遇到水文频率曲线拟合计算相关的问题,在网上查阅了一下,毕竟是专业性比较强的知识内容,好像没有比较系统全面的资料,一时兴起,做了一些研究,总结了一下所了解的一些计算方法以及能够帮助我们解决实际问题的辅助计算软件,并作了对比分析,主要情况如下......
  • 贝赛尔曲线
       贝塞尔曲线又称贝兹曲线或贝济埃曲线,一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。当然在一些比较成熟的位图软件中也有贝塞尔曲线工具,如PhotoShop等。在Fl......
  • 样条曲线 spline curves
        所谓样条曲线是指给定一组控制点而得到一条曲线,曲线的大致形状由这些点予以控制,一般可分为插值样条和逼近样条两种,插值样条通常用于数字化绘图或动画的设计,逼近样条一般用来构造物体的表面。    样条曲线是经过一系列给定点的光滑曲线。最初,样条曲线都是借助于物理样......
  • CV-Python画曲线图
    importmatplotlib.pyplotaspltimportnumpyasnpfromscipy.interpolateimportmake_interp_splinedefreadLoss(path,x,y):i=0y.append(float(0))x.append(float(0))withopen(path,"r",encoding='utf-8')asf......
  • 形如$Ax^2+Bxy+Cy^2+Dx+Ey+F=0$的圆锥曲线
    ......
  • 计算机图形:样条曲线与Bézier曲线
    目录基本概念插值、逼近样条参数连续性条件几何连续性条件样条描述三次样条插值自然三次样条Hermite插值Bézier 样条曲线曲线公式如何绘制Bezier曲线?Bézier曲线特性三次Bézier曲线参考基本概念样条:通过一组指定点集而生成的平滑曲线的柔性带。样条曲线(splinecurve):由多项式......
  • 椭圆曲线加密笔记
    数学知识域:一组元素的集合,以及在集合上的四则运算,构成一个域。其中加法和乘法必须满足交换、结合和分配的规律。加法和乘法具有封闭性,即加法和乘法结果仍然是域中的元素。域中必须有加法单位元和乘法单位元,且每一个元素都有对应的加法逆元和乘法逆元。但不要求域中的0有乘法逆......
  • matlab中polyfit和polyval的使用(曲线拟合/多项式拟合/指数拟合)
    matlab中polyfit函数的作用是对数据进行数据拟合有些小伙伴可能搞不清楚polyfit和polyval之间的区别,这里就直接上我的笔记给大家看看吧%%普通的多项式拟合clear;clc;num=30;x=linspace(0,5,num);%横轴数据error=rand(1,num);%生产误差值a=x.^2+2*error;%......