首页 > 其他分享 >OpenCASCADE HLR 轮廓线

OpenCASCADE HLR 轮廓线

时间:2023-12-03 20:57:58浏览次数:36  
标签:投影 HLR Edge OpenCASCADE 计算 轮廓线

OpenCASCADE HLR Quadric Surface Outline Edge

Key Words: HLR, Outline Edge, Sihouette Edge

1 Introduction

OpenCASCADE中关于隐藏线消除HLR算法的描述就是一句话:These algorithms are based on the principle of comparing each edge of the shape to be visualized with each of its faces, and calculating the visible and the hidden parts of each edge. 即根据面判断每条边Edge的遮挡关系,计算出边Edge可见和不可见部分。所以HLR算法的输入主要为边和面,计算遮挡关系依赖线面求交算法。对于精确的HLR算法依赖精确的线面求交算法,PolyAlgo算法依赖多段线与网格求交算法。输入的边中除了BREP中的边以外,还有一类是根据投影方向计算得来的,即外轮廓线Outline,也称为Contour线。ACIS的PHLR中称轮廓线Sihouette Edge。

轮廓线的计算是HLR中比较关键的一步,本文以OpenCASCADE中简单的二次曲面的轮廓线计算入手来理解曲面的轮廓线概念,为理解任意曲面轮廓线计算打下基础。

2 Outline Builder

OpenCASCADE的HLR中使用类HLRTopoBRep_OutLiner来计算外轮廓线。轮廓线的计算依赖投影方向及投影方式,主要计算逻辑在函数Fill()中:

投影方式主要分为透视投影Perspective和平行投影,工程图生成一般使用平行投影方式。实际计算类是Contap_Contour,在类Contap_Contour中又根据投影曲面类型分为两种类型来处理:

  • 二次曲面
  • 任意曲面

其中函数PerformAna()为计算平面、球面、圆柱面、圆锥面的外轮廓线,最终会使用类Contap_ContAna。其中Ana为Analytical解析曲面的意思,这里指能用解析表达式表示的二次曲面。

3 Contap_ContAna

类Contap_ContAna能计算球面、圆柱面和圆锥面的外轮廓线Contour,下面我们主要来看看这三类面的外轮廓线计算结果。

对于平行投影球面会生成以投影方向为法向,以球半径为半径的一个圆,代码如下所示:

如下图所示中的绿色的线:

对于平行投影圆柱面会生成两条直线,若投影方向与圆柱面法向平行时不生成轮廓线,这时就是使用圆柱体中的上下两个圆的边。代码如下所示:

生成的两条直线方向为圆柱面的轴方向:

圆锥面的轮廓线生成函数逻辑类似,留给读者自行分析理解。

4 Conclusion

综上所述,BREP的HLR算法需要计算模型的外轮廓线。如球体的BREP边有两个退化边(极点),及两个重合边,若来投影实质上只有重合边中的一条边有用,而这个边还是个半圆。从理解 简单的二次曲面外轮廓线计算函数入手,再去深入理解任意曲面的外轮廓线计算方法。

理解HLR实现原理,可以重构HLR代码,也可以完全自己动手,开发出满足实际需求的自动出图程序,自动出图是工程类设计软件中相对核心的功能,目前国内基于PDMS做自动出图相关软件开发的就有很多家。本着开放的心态分享这些相对比较关键功能的原理,让国内这些产品能摆脱基于AutoCAD/BricsCAD开发接口或PDMS Draft的限制,开发出更好用、更自由灵活的软件。

标签:投影,HLR,Edge,OpenCASCADE,计算,轮廓线
From: https://www.cnblogs.com/opencascade/p/occt_hlr_contour.html

相关文章

  • OpenCASCADE-HLR Edge
    OpenCASCADE-HLREdge1Introduction用计算机生成三维物体的真实图形,是计算机图形学研究的重要内容。真实图形在仿真模拟、几何造型、广告影视和科学计算可视化等许多领域都有着广泛应用。在用显示设备描述物体的图形时,必须把三维信息经过某种投影变换在二维的显示平面上绘制出......
  • OpenCASCADE曲线上点的反求
    本文主要结合代码介绍OpenCASCADE曲线上点的反求实现原理及使用过程中的一些注意事项。OpenCASCADE曲线上点的反求1Introduction曲线可以用代数方程表示,如圆可以用X^2+Y^2=R^2表示,也可以用参数方程X(u)=RCos(u),Y(u)=RSin(u)表示。要判断点是不是在线上,用......
  • OpenCASCADE 曲线求交
    对于拓朴边提供了求交算法IntTools_EdgeEdge,这个类是使用类似于曲面求交的离散网格法,使用了离散包围盒法。OpenCASCADE曲线求交1IntroductionOpenCASCADE中提供了二维几何曲线的求交类Geom2dAPI_InterCurveCurve,对应到三维几何只提供了GeomAPI_IntCS,GeomAPI_IntS......
  • OpenCASCADE二维曲线求交
    OpenCASCADE二维曲线求交1IntroductionOpenCASCADE中对二维曲线求交和三维曲线求交是不同的,三维曲线求交统一使用离散法,二维曲线求交根据曲线类型的不同分种类型进行处理。二维曲线求交中还提供了计算自交的直接接口。在TKGeomAlgo中,主要内容就是拟合、求交算法,理解求交算法的......
  • OpenCASCADE曲线上点的反求
    OpenCASCADE曲线上点的反求[email protected]曲线可以用代数方程表示,如圆可以用X^2+Y^2=R^2表示,也可以用参数方程X(u)=RCos(u),Y(u)=RSin(u)表示。要判断点是不是在线上,用曲线代数方程可以很直接得出结果,但是使用参数方程就没有那么直接。这也是参数曲线上点的反求......
  • OpenCASCADE - 曲线自交
    OpenCASCADE-曲线自交1IntroductionOpenCASCADE为二维曲线提供了求交及自交的类Geom2dAPI_InterCurveCurve:当传入一个二维几何曲线时可以计算自交self-intersections。但是没有提供直接的三维几何曲线求交的类,也没有直接的计算自交的类。有人同学问OpenCASCADE有没有三维曲......
  • 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来......