没有合适的资源?快使用搜索试试~ 我知道了~
可在ScienceDirect上获得目录列表计算设计与工程杂志首页:www.elsevier.com/locate/jcde计算设计与工程学报6(2019)105用于高速加工带或不带岛的2D型腔的螺旋刀具路径qMikkel Abrahamsen1哥本哈根大学计算机科学系,Universitetsparken 1,DK-2100Kbenhavn,丹麦阿提奇莱因福奥文章历史记录:2017年11月28日收到2018年1月3日收到修订版,2018年在线提供2018年保留字:螺旋状路径中轴线平滑高速加工A B S T R A C T我们描述了新的方法,用于高速加工的螺旋刀具路径的建设。在最简单的情况下,我们的方法以多边形作为输入,数字d>0,并返回一个从多边形的中心点开始的螺旋螺旋线由直线段和圆弧组成,它是G1连续的,它没有自相交,螺旋线上每个点到每个相邻旋转的距离最多为d。我们的方法比以前描述的方法的优点是,它是很容易调整的情况下,有一个岛屿的多边形避免螺旋。在这种情况下,螺旋从岛开始,并将岛变形到多边形的外边界。它示出了如何应用该方法,使显着更短的螺旋在一些多边形中没有岛屿比传统的螺旋刀具路径获得。最后,我们展示了如何通过将多个岛屿连接成一个岛屿来在具有多个岛屿的多边形中创建螺旋。©2018计算设计与工程学会Elsevier的出版服务这是一个开放在CC BY-NC-ND许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)下访问文章1. 介绍在CAM工业中经常出现的一个基本问题是找到一个合适的刀具路径来铣削由平面中的形状定义的腔。数控铣床被编程为跟随刀具路径,从而在固体材料片中切割具有给定凹穴形状的腔。机床的刀具可以被视为半径为r的圆盘,任务是在平面中找到刀具路径,使得当圆盘中心沿着路径移动时,圆盘的扫掠体积覆盖整个凹腔。为了简单起见,我们假设给定的凹腔由允许刀具中心的所有点组成,使得允许刀具路径在凹腔中的任何地方,而不在凹腔之外。已经对螺旋刀具路径进行了一些工作,这些螺旋刀具路径将凹腔内的 点 变 形 到 凹 腔 的 边 界 ( Banerjee , Feng , Bordatchev , 2012;Bieterman Sandstrom,2003; Chuang,2014)。由计算设计与工程学会负责进行同行评审。q本文的初步版本出现在ASME 2015国际设计工程技术会议和工程计算机与信息会议(IDETC/CIE 2015)上。1本作品的大部分是作者在Autodesk,Inc.工作时完成的。在准备论文时,作者得到了Mikkel Thorup的部分支持&Yang,2007; Held Spielberger,2009,2014; Held deLorenzo,2018; Huang , Lynn , Kurfess , 2017; Huertas-Talón , García-Hernández,Berges-Muro,&Gella-Marín,2014; Patel&Lalwani,2017;Romero-Carrillo,Torres-Jimenez,Dorado,Díaz-Garrido,2015; Xu,Sun,Zhang,2013; Zhou,Zhao,Li,2015)。Held和Spielberger(2009)描述的方法产生的刀具路径(i)开始于槽内用户指定的点,(ii)到达边界时结束,(iii)使刀具移除袋中的所有材料,(iv)没有自相交,(v)是G1连续的,2(vi)使材料的宽度在任何时候最多为d,其中d是用户定义的常数,称为跨距。Held和de Lorenzo(2018)简化了Held和Spielberger的方法。注意,我们必须有dr,因为否则有些材料可能不会被切掉。<参见图2(c),以获得这种螺旋刀具路径的示例。它是本文中描述的算法的结果,但与Held和Spielberger(2009)以及Held和de Lorenzo(2018)中描述的螺旋相似。我们参考Held和Spielberger(2009),详细讨论了高速加工中螺旋刀轨与各种其他刀轨模式相比的优势,以及一般CNC铣削的更多信息。我们描述了另一种螺旋结构,也坐-使前面提到的结构的性质丹麦独立研究委员会DFF-0602- 02499 B高级资助Sapere Aude研究职业计划下。电子邮件地址:miab@di.ku.dk2一条平面曲线是G1连续的或切连续的,如果曲线的弧长参数化是可 微的。https://doi.org/10.1016/j.jcde.2018.01.0032288-4300/©2018计算设计与工程学会Elsevier的出版服务这是一个在CC BY-NC-ND许可证下的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。106M. Abrahamsen/ Journal of Computational Design and Engineering 6(2019)105PPPPPVDPVD ¼VDPVP¼-公司简介VDP¼Held and Spielberger(2009).在实践中,非常常见的是,例如,如果存在不应该被加工到相同深度的材料区域,则在凹穴中存在应该被刀具Held和Spielberger(2009)仅描述了如何处理简单连接的口 袋 , 即 , 不 能 有 岛 屿 。 在 他 们 接 下 来 的 论 文(Held&Spielberger,2014)中,描述了如何通过用“桥”将其连接到边界来处理具有岛屿的口袋因此,生成的螺旋将点变形为由岛、桥和袋边界组成的类似地,Patel和Lalwani(2017)描述了如何将具有岛屿的我们的方法的一个很大的优点是,它有一个自然的延伸到口袋与一个岛的意义上说,螺旋变形的形状岛口袋边界,见图6(b)的例子。这是我们最大的新贡献。我们利用这样的事实,即一个口袋的Voronoi图与一个岛,包括确切的一个周期和树扎根在该周期定义一个波,开始在边界的岛在时间0和向外传播,到达外边界的时间1。该波用于定义螺旋刀具路径。我们将展示这种方法的自然应用,即对于没有岛的囊袋,制作比将一个点变形到囊袋边界的螺旋所能获得的螺旋短得多的螺旋,见图10(见图11)。我们还展示了如何处理多个岛的口袋,见图。 12(b).Banerjee等人(2012)和Romero-Carrillo等人(2015)还描述了计算将岛变形为袋的外部边界的螺旋的方法。然而,他们的方法仅在整个口袋边界从岛可见时才起作用,或者更严格地说,如果一个端点在岛边界处而另一个端点在口袋边界处的线段可以扫过整个口袋区域-而不会穿过口袋或岛的外部的任何部分-通过让端点沿顺时针例如,这些方法对于具有岛的袋不起作用,如图1B所示。7.第一次会议。我们的方法在口袋和岛屿的几何形状上没有任何本文基于作者变形螺旋似乎是相当受欢迎的用户。由于在开发过程中提供了大量的真实世界部件,我们保证可以对这里描述的算法进行有效的工业强度实现。我们使用Held本文中的所有数字都是使用我们的算法实现自动生成的。本文的其余部分结构如下:在第2节中,我们描述了我们的基本方法,使一个点变形到一个简单连接的口袋中的边界第3节描述了该方法如何适用于具有一个岛的袋使用这种方法,我们在第4节中描述了一种在单连通口袋中的替代螺旋,它在许多情况下优于第2节中的螺旋在第5节中,我们展示了如何通过首先将岛屿连接成一个岛屿来围绕任意多个岛屿最后,我们在第6节中总结了本文,提出了螺旋刀具轨迹未来发展的一些途径。2. 计算无岛在本节中,我们描述了一种计算给定的简单连接的2D口袋中的螺旋的方法,参见图2(c)。在实践中,口袋的边界通常由线段描述,更高级的曲线,如圆弧、椭圆弧和样条曲线。然而,始终可以使用输入的足够精确的线性化,因此为了简单起见,我们假设:是多边形。我们的算法首先构造一个螺旋,见图。第2段(b)分段。螺旋线必须遵守跨距d,即,从每个点到相邻旋转的距离和从最外旋转到边界的距离最多为d。在第2.8节中,我们设计了一种方法来圆化螺旋,由线段和圆弧组成的G1连续螺旋线螺旋线的角是的Voronoi图的边缘上的点,并且在螺旋线和Voronoi图之间的每个交点处都有一个角。我们只考虑了Voronoi图的内部部分。我们发现,我们得到更好的结果,在实践中,通过修改Voronoi图略有。我们在第2.7节中描述了这些修改,以避免在这里有太多的技术细节 见图图1是我们对Voronoi图所作修改的一个具体例子。 设为口袋的修改的Voronoi图。像修改的图的Voronoi图具有以下性质,这些性质对于螺旋的计算是必要的并且原则上也是1. VD是包含在P中的平面树,2. VD的每个叶在P的边界上,3. 在P的每个角上存在至少一个VD的叶,4. VD将P划分成的所有面都是凸的。2.1. 波浪模型我们想象一个波在时间t0开始于点p0的内部。波向各个方向移动,在时刻t1,它的形状与。波在特定时刻的形状称为波前。这股浪潮的增长是因为如果06t16t26 1,则时间t1处的波前包含在时间t2处的波前中。我们选择p0作为图VD中的一个点把它看作一棵以p为根的树。我们定义了波到达每个节点的时间和它在VD中每个边缘上传播的速度。波的速度总是恒定的或减小的。因此,我们创建一个连续映射h:VD#½0;1],它为VD上的每个点分配一个0到1之间的时间值。如果p是沿着VD上的路径从p0移动到任何叶的点,则值hp从0单调增加到01。 对于每个时间t2/20;1],波前是P内部的多边形,并且波前的顶点是VD上的所有点p,使得h_p=t。 注意,对于给定的t 2 ½ 0 ; 1 ],在从p 0到VD的叶的每条路径上正好有一个这样的点。对于某个整数r,我们定义一个时间步长D1/4=r,并计算在时间t2 f 0; D; 2 D;.. . ; rDg,其中rD ¼ 1,见图 2(a). 波前i是指时间iD处的波前。我们选择r,使得从波前i上的每个点到波前i-1和i ≠ 1中的每个的距离分别在i> 0和i0的父角是在从W f [i ][w]到Root的路径上的波f t-1上的唯一角Wf[i ][i-1][p w] 。 我 们 将 pw 存 储 为 Pawf[i]/w] , 即 , [1] 的 父 代 是[1 ][1][1 ][1]][2]。图3.第三章。 在多边形P中构造双螺旋:(a)从每个波前角点Wf½i]½w]到其父波前角点Wf½i-1]½PaW f½i] ½w]]的绿色和蓝色箭头所示的波前。图VD为灰色。(b)通过在波前之间插值得到的黑色螺旋。 紫色箭头是从螺旋的每个角点Sp½i]到其父角点Sp½P a½i]]的箭头。M. Abrahamsen/ Journal of Computational Design and Engineering 6(2019)105109VD VDP半- ]半]半]]半]半]½半]]VD半]半½]]由于从每个波前角到它的每个子波前的距离最多为d0,我们得到从一个波前上的点到相邻波前的距离最多为d0。此外,由于波以正速度朝向叶片移动,并且划分成的面是凸的,因此相邻波前彼此不相交。从波前的角被构造的顺序,也清楚的是波前不与其自身相交。2.6. 在波前我们构造一个存储为数组Sp的螺旋线。对于每个i 1;. r,我们通过在波前i-1和波前i之间插值来构造螺旋的一次旋转。螺旋的每个角都是VD上的一个点。在VD中从每个波前角Wf[i][i]到其父波前角Wf[i ][i][i]的路径上恰好存在一个螺旋角。现在假设我们知道如何选择螺旋的实际角我们稍后再讨论第一个角Sp1/20]在VD的根节点上,并且对于每隔一个角Sp1/2s];s>0,我们存储父索引Pa 1/2s],使得父节点SpPas是我们在从SpPas到根节点的路径上遇到的第一个角。图图3(b)显示了生成的双螺旋和每个角的父节点。我们定义螺旋线,使螺旋角点与其父螺旋角点之间的距离至多为d0。它遵循的距离从一个点的螺旋到相邻的革命是最多的d0。这里我们描述如何定义Pa指针.当我们已经构建了在从W f½i]½w]到其父波前角W f½i-1]½p w]的路径上的螺旋角S p ½ s ]时,我们知道在从Wf½i]½w]到根的路径上的第一螺旋角是S p½s],并且我们将该信息存储为PaS p½i]½w]½s。因此,当我们在从Wf<$i1]<$w0]到其父节点Wf<$i]<$pw0]的路径上创建一个新的螺旋角Sp<$r]时,Sp<$r]的父节点定义为ParPaSpipw0。通过这样做,角Sp Par 将是从Spr到根的路径上的第一个螺旋角。在下文中,我们将介绍如何选择螺旋的角。我们假设我们已经完成了波前i-2和i-1之间螺旋的旋转,我们展示了如何在波前i-1和i之间进行旋转。在构造波前i-2和i-1之间的旋转时,我们已经为每个波前角W[1/2 i-1]/2v]存储了索引图四、(a)两个蓝色波前之间的插值。图VD的标记部分为黑色,其余部分为灰色。 红色圆圈是点Q½w]。 绿色十字是凸化过程后存储在Sp中的螺旋线的结果点。紫色方框包含(b)中所示的细节(c)同一插值的相关值:点D½w];T½w]是红色圆圈。这些点的上凸包F是一条黑色曲线,绿色十字是该凸包上的点F <$D½w];F<$D½w]。110M. Abrahamsen/ Journal of Computational Design and Engineering 6(2019)105-- ÞDþD½ [美国PPPVD半]半]半 ] ¼½]½ ]半]半半- ] 半]半]-bMbbisi1m1、找到第一个交点FPVDVD半]半]½ðþÞ½P半半- ] 半]半]ps<$PaS p½i-1]½v],使得S p½ps]是从W f½i-1] ½v]到其父W f½i-2]½PaWf½i-1]½v]]的路径上的唯一螺旋角。现在,对于每个波形角Wf½i]½w],我们找到点Q½w]在到达Wfpw]的路径上,其中pwPaWfw],随时间变化我不是1WfLng½i]½w]. IfQw大于0远离[TtlWfLng½i]Sp½PaSp½i-1]½pw]],我们可以将Q½w]重新定义为同一点上的点在Voronoi图中,长边导致长面,因此波不会以自然的方式向边界移动它可能导致简并的一维波前。因此,我们在以下意义上将来自Voronoi图的长边的额外边设l1和l2是VD的两个叶,它们是@P上的邻居。这样的一对节点是在P的同一个或两个相邻的角上。假设是后者,距离为d0 的 路 径。我们标记从Q½w]到VD的根。参见图4。所以在@P上有一个从l1到l2的线段S,当我们对每个w做了标记后,我们再一次遍历波前i. 对于每个波形角W[i]/[w],我们找到到根的路径上的第一个标记点。 我们让P[w]是那个点,T[w] h [w]P[w] n是它的时间。我们具有T1/2w]Ptw,因为稍后的波前角W1/2w0];w0>w可以标记从W 1/2 w到根的更多因此,我们可以有PwPw1,对于某个w。使用这种构造,在从波前角到根部的每条路径上正 好 有 一 个 不 同 的 P 点 。 此 外 , 我 们 知 道 , 从 P1/2w] 到 螺 旋 角SpPaSpi1PaWfiw的距离至多为d0。由点P 0;P 1;. 基本上是我们的插值螺旋,但如果相对密集,则点往往具有不必要的尖角,这通常是实际问题中出现的多边形的情况。 为了避免这种角落,我们应用一种方法,我们表示为凸-ficatio n,见图。 四、设D<$w]<$$> Pw-1kP<$v]-P<$v<$1]k为长度Voronoi图在S的左边。 设s<$Pt1/2l2]-Pt1/2l1]是从l1到l2的向量,d<$ksk是S的长度,并且m<$dd=de。我们想把f细分成m个面。 设pi<$P t1/2]s·i;i<$1;。 . . ;m-1,beS上的插值点。 让他来吧!现在是半场开始的时候在p 方向为s,其中s为. 为每个¼;......的人。;--一种hi和Voronoi图之间的关系假设某i的交点是边e上的点q。如果h i和e之间的最小角度大于50°,我们通过在q处引入一个节点将e分成两条边,并从该节点添加一条线段到p i处的新节点。如果最小角度小于50°,则Voronoi图向边界移动得足够快,使得该区域中的波前将是精细的,而无需添加任何额外的边缘。我们进行的另一个修改与凹面P的角,即内角大于180°的角。P上的每个凹角c都指向Voronoi中的一个面直到P½wv¼0],并考虑各点w];T½w] . 我们P中所有点的图解比其他任何东西都更接近c计算这些点的上凸包,例如使用Graham和Yao(1983)的方法。设是其 图 是 上 壳 的 函 数 。 根 据 定 义 , 对 于 每 一 个 w<$0 , 我 们 有T½w]6F<$D½w];我们现在选择对于每个波前角Wf,我们在到达根的路径上找到点S,时间为FD½w]。如果S距离父螺旋角点Sp PaSpi1PaWfi w(这将是我们正在构造的螺旋角点的父螺旋角点)大于d0,则我们选择S作为点在同一条路径上,正好是d0避免重复如果S与Sp中的最后一个点不同,则将S加到Sp的末尾。由于我们通过将P点移动到更靠近波前i来获得螺旋角,因此我们在从波前角到根部的每条路径上获得恰好一个不同的当像图中一样稀疏。 3,凸化使得P-点和Sp中的最终点之间没有明显的区别,但是当密度如图所示。 4、效果显著。我们还在Sp的末端周围添加一圈旋转,这用于测试最后一次内插旋转在螺旋线稍后被圆化时是否遵守如上所述构造的螺旋线清楚地满足从一个旋转上的点到相邻旋转的距离至多为d0。此外,每次旋转都在两个相邻的波前之间,因为波前i和i之间的插值的所有角都具有在间隔iD;i中的时间 1个D.波阵面并不像前面提到的那样相交,所以螺旋线的不同旋转也不相交。从这个结构中也可以清楚地看出,一个革命本身并不相交。因此,螺旋线具有我们除了G1连续之外,我们的螺旋都需要。如何获得它在第2.8节中描述。2.7. 修改Voronoi图在本节中,我们概述了在做任何其他事情之前对P的Voronoi图所其结果是图VD/VDDVP。该过程的一个例子可以在在…的边界上因此,有两条边e1和e2的Voronoi图的端点在c上。我们已经发现,如果我们移除这些边,并在边的角平分线之后添加一条边,则可以得到更好的螺旋,即,我们沿着c的平分线,找到与Voronoi图的第一个交点q,并添加从q到c的边。该过程改进所得螺旋的原因是波前将更类似于P,因为它们将仅具有一个对应于角c的角(在P上的平分线边缘上),而不是两个(e1和e2中的每一个上的一个)。我们只能在生成的面也是凸的情况下进行此操作这是检查很容易通过计算的新角度的操纵面,它似乎是几乎总是如此。2.8. 环绕着螺旋形的螺旋在本节中,我们将描述一种可能的方法,用于平滑螺旋线以获得G1连续螺旋线。 见图 5之间的比较圆形和非圆形螺旋从图。 2使用该方法请注意,圆形螺旋圆的一些弧螺旋形的多个角图五、图 中 的螺旋。 2在一起螺旋是蓝色的,圆形的螺旋是黑色的。图1.一、M. Abrahamsen/ Journal of Computational Design and Engineering 6(2019)105111-c½]¼a-c-c-c-半- ]半 ]--]·半]半]ðÞ ¼ðÞ ¼1PðÞ对于螺旋线上的每个角,我们用一个圆弧代替包含角的螺旋线的一部分,该圆弧在端点处与螺旋线相切。这就形成了一个螺旋,是G1连续的,即,没有尖角。 对于每个索引i,设si<$S p 1/2i]S p1/2i[1]是从S p1/2 i[1]到S p1/2 i [1]的段,并且v i <$S p 1/2i[1]-S p1/2 i[1]是从S p 1/2 i [1]到S p 1/2i[1]的向量。每个弧起点p在某个线段sa上,终点q在另一个线段sb上;ab,因此圆弧代替了从p到q的螺旋线的一部分。<我们说,圆弧绕过a到b的角。如果弧是逆时针的,我们称它为切向的它的中心在两条半直线p;p∈v的交点上!s和q;qv!R 或者它是顺时针的,并且它的中心在半直线p;p伏!s和q;q伏!R. 因此,如果每个角用一个正半径的切向弧代替,则得到的螺旋线是G1连续的。我们将指针Arc½i]存储到替代角的弧S p½i]。相同的弧可以替代多个连续的角,使得Ar c1/2Ar c1/2。 . .^^ 在这种情况下,当Arc1/2i-1]的邻居的[A]是Arc i 1和Arc i k。 两个不同的弧必须取代不相交的部分,螺旋的圆形螺旋是明确的。我们在点p a 2 s a处细分每个线段s a,使得在sa处结束的弧的端点必须在线段S p½a]pa处,并且在s a处开始的弧的起点必须在线段PaS p½ a<$1]上。点pa被选择为Sp½a]和Sp½a<$1]的加权平均,使得圆弧圆化最尖锐的角[1]和[2]的空间最大。设fa2-p;p]为角点Sp a处的角 螺旋形的。 我们设置wp-/a和2名p-/a-/a选择pa作为pa1WaSPaWaSpa1。我们保留了一个优先级队列Q(Cormen,Leiserson,Rivest,Stein,2009)的弧,可以扩大。在弧的每次放大之后,所得到的螺旋遵守跨距d并且没有引入自相交。我们说具有这些性质的弧是可用的。最初,我们让每个角都由退化的零半径圆弧圆化,Q包含所有这些圆弧。显然,这些初始零半径弧根据定义是可用的我们考虑Q中的前弧A,并试图找到另一个可用的弧A0来代替更长的螺旋链。新圆弧A0的半径通常大于A.如果可能,我们选择A0所以它也取代了A的一个,或者最好是两个邻居。假设我们成功地生成了一条可用的弧A0,它同时替代了A和它的邻居B和C。现在A0将之前由A、B和C圆化的角的并集圆化。对于所有这些角落,我们更新弧指针并从Q中删除A、B和C。我们把A加到Q上。对于A0所圆化的每个角,我们还将圆化该角的子和父的弧添加到Q,因为这些弧现在可以被放大。如果找不到更大的可用弧A0,我们就从Q中去掉A。舍入过程在Q为空时终止。我们通过测量到圆化子角和父角的弧的距离来测试弧是否可用这是很容易做到的使用基本几何计算。在这里,我们描述如何找到最大的可用弧圆的角落a1到b;ab。<我们用初等几何方法求出从paSp½a[1]上的一点开始到Spb pb上的一点结束的切弧可能没有这样的弧,在这种情况下,我们放弃寻找一个弧圆这些角落。否则,我们有一个从paS p½a[1]到S p½b [b]pb 的切向弧半径区间[1/2 r min; rmax]。我们检查半径为rmin的圆弧是否可用。如果不是,我们就放弃。否则,我们检查半径为rmax的圆弧是否可用。如果是,我们就使用它。否则,我们在半径最大的可用弧之后的rmin;rmax区间内进行二分搜索。当二分查找间隔变得足够小时,例如0: 01d,我们停止,并使用间隔中具有最小数字的弧作为其半径。Q中的弧的顺序以如下方式建立:我们有发现的给的电弧一的优先PA rA=rCmax1=sA给出了很好的结果,其中rA是A的半径;sA是从A的中心以弧度表示的对向角的大小,rCmax是P中包含的最大圆的半径。Q中的前弧是具有最小P值的弧。我们除以r,以使P和d按相同的数字缩放时舍入不变。r Cmax可以从的Voronoi图中获得,因为最大的内切圆的中心在图中的节点 如果s A0,我们设P A,因为没有角要圆化。我们看到,半径小或对角大的圆弧首先被选择放大。在开始时,当Q中的所有弧的半径为零时,最尖锐的角中的弧首先被选择,因为它们的退化弧具有更大的对向角图六、(a)一个多边形P和一个岛I,都是黑色的。P n I的图VD用蓝色的循环C和灰色的其他边缘绘制。(b)由此产生的恶性循环。112M. Abrahamsen/ Journal of Computational Design and Engineering 6(2019)105PIPP nIPIPC我PPTIPIVDVD P nIVDCVD PIVD PIVD P nIn即使半径为零,我们仍然可以根据在拐角处相交的线段的斜率来定义弧的起始角和结束角,从而定义弧的对向角。如果每次我们成功地做出一个更大的弧时,两个或三个弧都被一个更大的弧所取代,那么我们可以肯定舍入过程确实终止了,因为螺旋的复杂性降低了。然而,通常不可能合并两个或三个弧,而只能制作一个更大的弧,作为旧弧的圆角。圆形螺旋变得更好,但我们不能证明这个过程终止了。在实践中,我们在任何测试示例中都看到了快速终止。一种可能的补救办法是只允许每个弧的大小增加,而不使更多的角变圆固定次数。3. 计算带岛口袋中的螺旋线在许多实际应用中,待加工区域不是简单连接的,而是具有一个或多个这可能是因为在较厚材料层的部分或区域中存在物理孔,而不是以相同的深度进行加工。因此,假设我们给定一个多边形和一个位于内部的多边形岛屿在第5节中,我们提出了一种处理多岛的方法。 用,我们表示在P的内部或边界上但不在I的内部的点的闭集。我们想要计算包含在P nI中的螺旋,使得在(i)两个连续的旋转,(ii)I和第一旋转的边界,以及(iii)P最后一次革命。我们还要求螺旋线是G1连续的,并且没有自相交。见图 6(b)为例。与简单连通口袋的情况一样,我们使用波模型来构造螺旋。我们想象一个波,它在时间0时的形状正好是,并向的边界移动,因此在时间1时,它的形状是。我们解释如何定义一个螺旋形。螺旋应采用类似于第2.8节所述的方法进行修圆。3.1. 带岛口袋的Voronoi图我们使用P的线段集的Voronoi图,I. 在没有岛的情况下,我们稍微修改了图。1.是一个连通的平面图,2. 每一个叶子都在或的边界上,3. 在和的每个角上有至少一个叶片,4. 所有划分的面都是凸的,5.包含一个循环,循环是所有点的轨迹,这些点都同样接近和的边界,并且包含在它的内部。图由一个周期组成,我们也由中央循环表示,和一些树木生长出来,见图6(a)。每棵树都向外生长,所有的叶子都在树的边界上。或者向内,在…的边界上一般的想法是使用第2节中描述的方法来分别定义这些树中的每一个中的波前。然后,我们在每棵树中的相邻波前之间进行插值,并连接插值片段以获得一个连续的螺旋。在没有岛的多边形的情况下,我们丰富了Vor- onoi图,并删除了如2.7节所述的凹角的双边。我们希望树是对称的,在这个意义上,有一棵树PT n的根是n 2C,叶子在P的边界上,当且仅当有一棵树ITn的根是n,叶子在I的边界上。 如果对于一个节点n 2 C,我们只有一棵树,比如说IT n,我们从节点n到P的边界上最近的点添加一条边,让n是由这条边组成的树。从Voronoi图的性质可以看出,添加的边不与任何其他边相交。我们将C存储为向量½n0;。 . . .. ;c-1。 根 节点 是节点n 对秀丽隐我们让Tn<$PTn[IT n]是以节点为根的两棵树的并集,n2 C,把Tn看作一棵以节点n为根的树.3.2. 定义波在每棵树Tn上,我们现在定义一个类似于2.1节中描述的波模型。 波在I的边界上的叶上的时间t 1/4 0处开始,并且移动通过Tn,使得它在时间t 1/4 1处撞击P的边界上的叶。 我们计算从n到I和P的波前。设VD^VD ^PnI是修改后的多边形。就像真正的沃罗诺伊假设根节点n的优选时间是t [1/BndHgt½n]BndHg t½n ] IslHgt½n]图,修改后的图VD具有以下性质:其中BndHg[t½n]和IslHg[t½n]是最长路径的长度图7.第一次会议。(a)当对根节点中的波的时间和速度应用适当的平滑时,红色的波前C为蓝色,VD的其余部分为灰色。(b)当优选的时间和速度已被用于定义波的运动时的波前M. Abrahamsen/ Journal of Computational Design and Engineering 6(2019)105113C不C半]半] ¼0天最 大电压IslHgt½n];BndHgt½n]半]半]半 ]½]TmNdn对于每个节点n,.因此,我们可以得到波前nSInsPnn2CnC到PTn和ITn中的一个叶。类似地,如果时间TmNd 1/2n]否则他们就在PTN 上。 令rn½bTmNd½n]c。波浪已经被定义,我们让首选 速度 n是n oTmNd½n].1-TmNd½n]DI¼ 0;. ;r n在ITn上,而波前i<$r n<$1;. ;r在PTn. 如第3.2节所述,我们不使用相同的时间定义根n的时间和速度的一种简单方法是:设置TmNdntn和VeNdnv; 这将使旋转的次数树;树然而,时间和速度的突然变化中央循环导致了一个弯曲很多的螺旋。相反地,我们可以平滑根节点的时间和速度.这可以通过许多不同的方式来实现,我们将把细节留给读者。见图7.第一次会议。3.3. 创建波前[十字架]和波阵面互相交叉。我们以后将解释如何避免螺旋线有自交。我们建议将波前角点存储在每个树ITn和PTn的二维阵列中。一个波前t的ITn上的波前角被存储在阵列IslW[n][j]中,其中索引j对应于波前i[n]-j[n]。在PTn中,阵列BndW[1/2n] 1/2j]存储波前i/2j/n的 角。因此,核心--每个波阵面的能量被本地存储在每个树Tn中。在ITn中,波前i/4 0;.. ;rn-1是波前i=1的角。在PTn中,波前的角的父节点i^r n= 2;.. ;r是波前i-1的角。对于给定的根节点n2C,我们至少需要s1/4IslHgt½n]revo因此,所有的父母都在波前上更近了一步,Ind0根;根无论是和,我们引入假波前角点在树ITn中的螺旋线的解决方案,以尊重步距ITnPTnBndHgt½n]d 0.95天。类似地,我们希望PTn中有sPn/4个旋转。在存储在数组IslWfn0和BndWfn0中的根n处,它们分别是数组中角点的父节点因此,两次旋转之间的时间最多应为D1/4minnTmNd 1/2n];1-TmN d 1/2n]o. 因此,我们让D01/4min fDg是IslW f½n]½1]和BndW f½n]½1]。而这些伪君子,其实并不存在。对于任何i/4 0;. ; r,但只是为了所有这些值的最小值。我们让转数设r1/d1=D0e,设D 1/d 1=r。每个树Tn包含每个波前i的角的
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功