掌桥专利:专业的专利平台
掌桥专利
首页

一种平面曲线包覆算法的优化方法、设备及存储介质

文献发布时间:2024-04-18 20:00:50


一种平面曲线包覆算法的优化方法、设备及存储介质

技术领域

本发明涉及曲线包覆的技术领域,具体地,涉及一种平面曲线包覆算法的优化方法、设备及存储介质。

背景技术

曲线按照一定规则缠绕到曲面表面,使得曲线与曲面完全贴合,且包覆前后曲线长度一致。在此过程中,包覆的主体是曲线,包覆的目标是曲面,包覆的结果是曲面上的参数曲线(PCurve)。相较于曲线投影,包覆后的曲线能够基本保持原始形态而不会发生严重的扭曲与形变。

目前,包覆算法在表面加工工艺(如:镂空或雕刻)中被常被用到。

主流的三维CAD/CAM中,大都支持类似曲线“包覆”的功能,如:Cat ia中的“展开”,PreE中的“包络”,NX中的“缠绕”命令等。但严格来说,它们并不属于曲线的包覆。它们创建的曲线形态与长度均会发生不同程度的改变,并且此类命令也大都仅支持可展曲面的处理。

而对于一般曲面(包括不可展曲面)的包覆算法,目前存在精度差、包覆前后曲线长度不一致等问题。这里提出一种平面曲线包覆到曲面算法的改进方法,以提高包覆的效果与精度。

目前,曲线包覆的算法多是基于网格实现的。主体思路是:将曲面细分后的面片,逐一与曲线平面对齐,通过求交或投影的方式可以获得曲线与每个面片的交点,将这些交点映射回曲面表面,并利用插值的方式,即可获得包覆后的参数曲线(PCurve)。

此方法在计算过程中无法准确计算各分段包覆曲线的长度。原因是因为包覆过程尚未完成,无法获得插值后的参数曲线。并且参数曲线也无法直接获得欧式空间下曲线的长度。

因此,在实际的曲线包覆中,会采用包覆点的连线长度替代弧线长度。计算得到的曲线长度实际是曲面的内接多段线的长度,比理论值偏小,最终导致包覆曲线可能偏短或偏长(与具体编码实现有关)。为避免这个问题,必须将曲面尽可能的细分,才能保证曲线包覆的精度。但这会增加曲面细分时间,也会增加需要包覆的面片个数,引起效率方面的问题。

发明内容

本发明的目的在于解决现有技术的不足,提供一种快速计算曲面上任意两点距离的方法,这里的距离指的是过两点的平面与曲面交线的长度。

为实现上述目的,本发明提供一种平面曲线包覆算法的优化方法,包括以下步骤:

S1.选取目标直线段,与网格化处理后的三角面片求交;

S2.当存在两个交点时,将两个交点命名为A和B,以直线

S3.确定A点的法向在XY平面的投影以及A点的斜率K;

S4.将上述数据带入公式:

此时,弧线

S5.在包覆过程中,基于包覆点A、B与网格面片的法向,构建截平面坐标系;

S6.将数据带入弧线

优选的:所述步骤S2还包括步骤S21,所述步骤S21具体如下:

S21.当存在1个交点时,目标直线在面片内截止,确定目标直线终止点。

优选的:所述步骤S2还包括步骤S211,所述步骤S211具体如下:

S211.曲线长度耗尽,收集交点在曲面上的最近点进入下一步。

优选的:还包括步骤S7,所述步骤S7具体如下:

S7.更新目标直线段的起始点与方向向量,当方向向量的长度不为0时,返回步骤S1。

优选的:所述步骤S7还包括步骤S71,所述步骤S71具体如下:

S71.当方向向量的长度为0时,曲线长度耗尽,收集交点在曲面上的最近点进入下一步流程。

本发明还提供一种计算机设备,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述任一项所述的方法。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。

与现有技术相比,本申请提出的技术方案具有如下的有益效果:优化后的包覆算法,可以直接在包覆过程中获得分段包覆曲线的长度,并基于此长度修正包覆点位置,保证最终的包覆曲线长度与原曲线长度一致。在平面曲线的包覆过程中,通过构建特殊的坐标系,利用数值积分快速计算包覆分段曲线长度,并利用此长度矫正包覆过程,从而获得一个更好的包覆结果。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的曲线长度计算坐标系;

图2为本发明的曲线长度示意图;

图3为本发明的构建的二维坐标系图;

图4为本发明的包覆算法的流程图;

图5为本发明的优化方案流程图;

图6为本发明的电子设备的结构示意图;

图7为本发明的计算机可读存储介质的结构示意图。

具体实施方式

以下将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整的描述和讨论,显然,这里所描述的仅仅是本发明的一部分实例,并不是全部的实例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。

需要说明的是,当组件被称为“固定于”另一个组件,它可以直接在另一个组件上或者也可以存在居中的组件。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。当一个组件被认为是“设置于”另一个组件,它可以是直接设置在另一个组件上或者可能同时存在居中组件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

参照图4和图5,本实施例公开了一种平面曲线包覆算法的优化方法,曲线包覆(wrap)是一种高级曲线造型技术,文中的包覆算法特指:包覆前后曲线长度不变的一类算法。目前主流CAD软件可以支持类似的功能,如:Catia中的“展开”,PreE中的“包络”,NX中的“缠绕”,SolidWorks中的包覆命令等.功能逻辑是:以SolidWorks中的包覆功能为例,支持用户将一个草图中曲线包裹至曲面表面使之完全贴合,以生成一个新的实体.包覆前后曲线长度保持不变,这一点对于文字及logo造型具有重要的意义。图4中示出了包覆算法的完整流程图,而本实施例仅是在此基础上对计算弧线长度的方案部分进行了优化,具体参照图5的流程。

需要说明的是,参照图1和图2,

由于:

且:

所以:

进一步参照图2,弧长为:

根据数值积分中的梯形公式:

曲线长度近似可以表示为:

梯形公式的积分余项为2阶,基本上可以满足正常的精度需求。

参照图3,XY平面是过曲面上AB两点的一个截平面,弧线

以直线

0=N.AngleTo(y)

f′(A)=tan0;

此时问题从三维退化到二维平面。将简化后场景带入弧长公式1.0。此时:弧线

在对每个面片进行的包覆过程中,都可以基于包覆点A、B与网格面片的法向,构建一个截平面坐标系,具体方式如下所示:

X轴方向:

Y轴方向:

其中

此时,已知直线

需要说明的是:包覆的方向为直线(或折线分段)的方向,包覆的长度为直线(或折线分段)的长度,当此长度耗尽时,包覆结束。利用上述弧长公式,可以计算单个分段包覆曲线的长度以及剩余长度。当长度完全耗尽时,收集所有包覆点,并对其进行插值,获得的曲面上的参数曲线,即是所求的包覆曲线。平面曲线与三角面片对齐后,二者位于同一平面,可以利用二维曲线求交方法进行计算。理论上,此算法只适用于直线段或折线段的曲线包覆。但对于其他类型的平面曲线,可以通过提取特征点(插值点)构建折线,再将包覆后的特征点拟合或插值,也可以实现对一般平面曲线的包覆。在前述过程中采用了数值积分中的梯形公式。也可以采用Simpson求积公式或Cote求积公式。

本公开的一些实施例,示出了一种电子设备的结构示意图。下面参照图6来详细描述根据本实施例中的实施方法实施的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本公开技术方案任何实施例的功能和使用范围带来任何限制。

如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组建可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。

其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本实施例中上述方法的实现。

存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取单元(RAM)6201和/或高速缓存存储单元6202,可以进一步包括只读存储单元(ROM)6203。

存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线630可以表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图像加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可以与一个或者多个使得用户与该电子设备600交互的设备通信,和/或与使得该电子设备能与一个或多个其他计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其他模块通信。应当明白,尽管图6中未示出,可以结合电子设备600使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。

在本实施例中,还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时能够实现上述方法。

尽管本实施例未详尽地列举其他具体的实施方法,但在一些可能的实施方法中,本公开技术方案说明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行根据本公开技术方案各种实施例中实施方法的具体步骤。

图7根据本公开的一些实施例示出了一种计算机可读存储介质的结构示意图。如图7所示,其中描述了根据本公开技术方案的实施方法中用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。当然,依据本实施例产生的程序产品不限于此,在本公开技术方案中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读存储介质可以包括在基带中或者作为载波一区域传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本公开技术方案操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、区域地在用户设备上执行、作为一个独立的软件包执行、区域在用户计算设备上区域在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,以及对于上述实施例一个或多个进行组合实施例,本领域技术人员可以在权利要求的范围内做出各种变化或修改或组合,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

技术分类

06120116541892