首页 > 其他分享 >OpenCASCADE曲线上点的反求

OpenCASCADE曲线上点的反求

时间:2023-11-21 22:45:24浏览次数:35  
标签:上点 反求 曲线 参数 OpenCASCADE 端点

OpenCASCADE曲线上点的反求

[email protected]

1 Introduction

曲线可以用代数方程表示,如圆可以用X^2+Y^2=R^2表示,也可以用参数方程X(u)=RCos(u), Y(u)=RSin(u)表示。要判断点是不是在线上,用曲线代数方程可以很直接得出结果,但是使用参数方程就没有那么直接。这也是参数曲线上点的反求问题,参数曲线上点的反求问题应用广泛,如前面所述判断点是否在曲线上、点向曲线投影、点与线的求交、点在参数曲线上的参数等,都与点的反求问题相关。本文主要结合代码介绍OpenCASCADE曲线上点的反求实现原理及使用过程中的一些注意事项。

2 实现原理

在《The NURBS Book》书中将点的反求问题归结为点向曲线投影距离最短的问题,如下图所示:

建立函数f(u)=C’(u).(C(u) - P)表示点到曲线距离,当f(u)=0时为点到曲线的最短距离,不管点P是否在曲线上。几何意义是点到曲线任意点的向量与任意点处的切向量点积为零,表示在两个向量垂直的时候求得极值点。注意数学方程中垂直这个几何意义。

OpenCASCADE中实现曲线上点的反求原理与《The NURBS Book》书中一致。点的反求使用类GeomLib_Tool::Parameter()函数:

输入曲线、点和最大距离,计算点是否在曲线上及若在曲线上,点对应参数曲线的参数U。

类Extrema_ExtPC计算点P到线C的极值Extrema。根据代码注释可以看出点的反求数学方程与《The NURBS Book》书中一致:

数学方程对应的类的变量为myF,类名为Extrema_FuncExtPC,从类math_FunctionWithDerivative派生,所以必须实现两个关键虚函数Value()和Derivative()。其代码注释说明了这两个函数的实现细节:

其中F(u)对应函数Value():

DF(u)对应函数Derivative(),最后使用Newton法math_FunctionRoots对方程进行求根。

3 注意事项

OpenCASCADE中点的反求GeomLib_Tool::Parameter()、点向曲线投影GeomAPI_ProjectPointOnCurve、点与曲线的交点IntTools_Context::ComputeVE等算法都是使用了Extrema_ExtPC类。

 

当使用GeomLib_Tool::Parameter()函数来判断点是否在曲线上时,注意端点处点的反求要满足垂直的条件,即使点与曲线某个端点距离小于MaxDist时,也是返回false。即对于曲线端点处的情况需要自己预先处理,直接算点P与曲线端点距离与MaxDist比较,先处理端点。

可以看到这里也处理的端点处的情况,但是最后没有与MaxDist有关系,最后容差是Precision::SquareConfusion()。

 

标签:上点,反求,曲线,参数,OpenCASCADE,端点
From: https://www.cnblogs.com/opencascade/p/occt_extrema_pc.html

相关文章

  • OpenCASCADE - 曲线自交
    OpenCASCADE-曲线自交1IntroductionOpenCASCADE为二维曲线提供了求交及自交的类Geom2dAPI_InterCurveCurve:当传入一个二维几何曲线时可以计算自交self-intersections。但是没有提供直接的三维几何曲线求交的类,也没有直接的计算自交的类。有人同学问OpenCASCADE有没有三维曲......
  • 在移动电话上点击网页链接时如何触发电话呼叫。
    内容来自DOChttps://q.houxu6.top/?s=在移动电话上点击网页链接时如何触发电话呼叫。我需要为移动设备构建一个网页。只有一件事我还没有弄清楚:如何通过点击文本来触发电话呼叫?是否有一个特殊的URL可以像mailto:标签用于电子邮件那样使用?不希望使用特定于设备的解决方......
  • OpenCascade 开源的三维建模几何造型开发平台
    官方文档 https://dev.opencascade.org/doc/overview/html/index.htmlOpenCASCADE(简称OCC)平台是由法国MatraDatavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一。OpenCASCADE是一套开放原始码的CAD/CAM/CAE几何模型核心,源自于法国......
  • OpenCASCADE 扫掠曲面
    OpenCASCADE扫掠曲面[email protected]蒙皮(Skinning)就是将一簇截面曲线(sectioncurves)融合在一起生成曲面的过程。蒙皮只是放样(Lofting)的新名词,放样可以追溯到计算机没未诞生的时候,从那时到现在,它一直在造船、汽车和航空工业中被广泛地应用。扫掠(Sweep)研究的是一条......
  • [开源]-OpenCASCADE-IMGUI
    [开源]-OpenCASCADE-IMGUI1IMGUIImGui是一个用于C++的用户界面库,跨平台、无依赖,支持OpenGL、DirectX等多种渲染API,是一种即时UI(ImmediateModeUserInterface)库,保留模式与即时模式的区别参考保留模式与即时模式。ImGui渲染非常快,但界面上有大量的数据集需要渲染可能会有一些......
  • OpenCASCADE GLFW IMGUI
    OpenCASCADEGLFWIMGUI如果从事过C++Windows客户端开发,大家对MFC、Qt、DuiLib、WxWidgets等各种DirectUI应该有了解,本篇给大家介绍一个超级轻量级的C++开源跨平台图形界面框架ImGUI.ImGUI主要用于游戏行业,所有的控件都需要手绘实现,当然性能也是满满的,毕竟是直接用dx/opengl来......
  • “缘小二”线上点餐系统的设计与实现-计算机毕业设计源码+LW文档
    选题意义随着我国经济的快速发展以及人们生活水平的提高,人们的消费意识也有了很大的转变。现如今,人们的收入极大提高,生活节奏加快,很少在家做饭而是选择去餐厅就餐。随着餐饮业的发展,餐饮店越来越多,市场竞争也越来越激烈,为了顺应时代发展变化和人民需求的提高,餐饮业也不断完善自身......
  • 基于springboot网上点餐系统
    系统管理也都将通过计算机进行整体智能化操作,对于网上点餐系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、用户管理、美食店管理、美食分类管理、美食信息管理、美食订单管理、美食评价管理、系统管理,用户;首页、个人中心、美食订单管理、美食评价管理、我的收藏......
  • occ配置(opencascade+qt+vs)
    配了几天终于配完了我真的删q先是下载了qt5.12.1和opencascade7.4.0和visualstudio2017和b站一个博主(城外柳依依)一起配的,配完还是报错先是找不到qt5scoreed.lib最后我把这个文件找到(D:\Qt\Qt5.12.1\5.12.1\msvc2017_64\lib),然后两个对应的文件复制到opencascadein64文件夹里......
  • opencascade 连续性术语
    在OpenCASCADE中,D0、D1、D2、D3和D4是用于描述曲线和曲面连续性级别的术语。它们代表了不同的连续性要求:D0连续性(位置连续性):D0连续性是指相邻曲线段或曲面片之间的位置连续性。如果两个曲线段或曲面片是D0连续的,它们共享一个公共端点或边界,但在连接点可能存在位置的不连续性......