首页 > 其他分享 >OpenCASCADE曲面求交之网格离散法3

OpenCASCADE曲面求交之网格离散法3

时间:2023-05-23 23:12:12浏览次数:38  
标签:求交 采样 网格 离散 交线 OpenCASCADE 曲面

OpenCASCADE曲面求交之网格离散法3

[email protected]

1 Introduction

由朱心雄等著《自由曲线曲面造型技术》书中对曲面求交之网格离散法描述如下:该法的基本思想是先将曲面离散为由小平面片组成的网格,当网格足够密时,可以认为已经非常接近真实曲面,对分别表示不同曲面的两张网格,利用平面片求交法求得的交线,并以此交线近似代表曲面间的交线。这种方法原理简明,便于实现,适用范围广,任意参数曲面均可利用该法求交。但为获取精确地交线,则必须生成非常细密的网格,这将导致占用内存多,计算花费大。因此,实际工作中很少单一使用离散网格法,而常将其与其他方法结合使用。

OpenCASCADE中对于曲面求交也提供离散网格法,其中曲面的离散网格由类IntPatch_Polyhedron表示,两个网格面求交使用类IntPatch_InterferencePolyhedron。在实际计算两个面相交时并没有使用这个类,而是使用类IntPolyh_Intersection,而离散网格使用类IntPolyh_MaillageAffinage。

2 网格离散

使用类IntPolyh_MaillageAffinage主要用来生成曲面的网格,其中MaillageAffinage是法语,翻译过来是Mesh Refining网格细化,网格精度主要是通过参数U,V方向上的采样点数量来确定。当不指定采样点数量时,默认是参数U,V方向分别10个,即默认会生成10x10个采样点,即使是平面也是生成100个采样点。通过函数FillArrayOfPnt()生成采样点。通过函数FillArrayOfTriangles()来生成三角形,三角形的数量通过如下图所示公式计算,默认数量 为2x(10-1)x(10-1)=162。

对于简单的平面,如果不指定采样点数量,也会生成100个采样点及162个三角形:

3 网格求交

两个网格求交是通过类IntPolyh_Intersection来计算,计算的结果也是两个网格之间的交线。还是将交线显示出来便于观察:

从生成的交线来看,这个结果要比IntPatch_InterferencePolyhedron要好,没有多余的交线。类IntPolyh_Intersection中使用BVH来过滤不相交的三角形,所以速度也会快很多。

4 Conclusion

综上所述,使用类IntPolyh_Intersection来计算两个曲面网格的交线。曲面网格生成直接通过参数U,V上的采样点数量来确定,虽然生成网格速度快,但是精度控制不好,即使是平面也会根据采样数量生成大量采样点和三角形,影响求交速度。网格求交作为曲面求交的预处理步骤,如何用更少的三角形来表示曲面,可提高网格求交性能。

标签:求交,采样,网格,离散,交线,OpenCASCADE,曲面
From: https://www.cnblogs.com/opencascade/p/occt_IntPolyh_Intersection.html

相关文章

  • OpenCASCADE曲面求交之网格离散法2
    OpenCASCADE曲面求交之网格离散法[email protected]由朱心雄等著《自由曲线曲面造型技术》书中对曲面求交之网格离散法描述如下:该法的基本思想是先将曲面离散为由小平面片组成的网格,当网格足够密时,可以认为已经非常接近真实曲面,对分别表示不同曲面的两张网格,利用平......
  • VTK 显示3D网格线
    在VTK9.1.0在Windows10+VS2019+Qt5.15.2环境下编译安装的Qt例子中,想显示球体表面的网格线。通过vtkExtractEdges来实现显示全部网格线QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());vtkNew<vtkRenderer>renderer;vtkNew<vtkNam......
  • 山东算法赛网格事件智能分类topline
    赛题链接:http://data.sd.gov.cn/cmpt/cmptDetail.html?id=67baseline:https://aistudio.baidu.com/aistudio/projectdetail/3371314?contributionType=1分数:0.749+ 任务(1)赛题任务基于网格事件数据,对网格中的事件内容进行提取分析,对事件的类别进行划分,具体为根据提供的事件描述,......
  • 【Echarts】 grid网格
    Echarts网格问题:grid:{//直角坐标系内绘图网格left:'10',//grid组件离容器左侧的距离,//left的值可以是80这样具体像素值,//也可以是'80%'这样相对于容器高度的百分比top:'10',right:'30',bottom:'0',......
  • OpenCASCADE曲面求交之网格离散法1
    OpenCASCADE曲面求交之网格离散法[email protected] 1Introduction由朱心雄等著《自由曲线曲面造型技术》书中对曲面求交之网格离散法描述如下:该法的基本思想是先将曲面离散为由小平面片组成的网格,当网格足够密时,可以认为已经非常接近真实曲面,对分别表示不同曲面的两张网格,利用......
  • FreeCodeCamp-通过创建杂志学习 CSS 网格布局
    index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>Magazine&......
  • LeetCode/二维网格图中探测环
    给你一个二维字符网格数组grid,大小为mxn,你需要检查grid中是否存在相同值形成的环。一个环是一条开始和结束于同一个格子的长度大于等于4的路径。对于一个给定的格子你可以移动到它上、下、左、右四个方向相邻的格子之一,可以移动的前提是这两个格子有相同的值1.深度......
  • opencascade下载安装
    安装要求(https://www.opencascade.com/components/cad-simplification-component/)下载地址:https://dev.opencascade.org/release截图如下(从https://dev.opencascade.org进,RESOURCES=>Download): 安装之后目录:《opencascade-7.7.0》文件夹:在环境变量中添加环境变量:DEvEnv......
  • 【Python&Hypermesh】ABAQUS导入网格,并在Part内保留SET
    在Hypermesh定义好set,划分好网格以后,可以导出为INP。然后在ABAQUS导入inp,就可以得到网格。但是这样倒进来的网格一般有两个问题:网格全在一个部件里,原来定义好的Set会出现在装配级别下,而不是Part级别,这在某些情况还是比较麻烦的Hypermesh中的component并不和ABAQUS的Part相对应......
  • 界面控件DevExpress WinForm的垂直网格,让数据展示更灵活(二)
    DevExpressWinForm VerticalGrid(垂直网格)组件设计用于提供UI灵活性,它允许显示数据集中的单个行,或在其90度反向网格容器中显示多个数据集行。此外,开发者还可以将其用作属性网格,就像在VisualStudioIDE中找到的那样。PS:DevExpressWinForm拥有180+组件和UI库,能为WindowsForms......