本发明专利技术提供了一种基于空间几何的图形修剪方法,其包括如下步骤:S1,获取需要修剪的图形,并获取输入的被修剪图形;S2,被修剪图形是直线段,计算所有修剪图形与直线段交点,再计算这些交点至直线段起点距离;再记录修剪点至直线段起点距离;将所有距离从小至大排序,根据距直线段起点距离获取与修剪点相邻的图形交点;将直线段起点与左交点作为新的直线段的起点、终点,将右交点与直线段终点作为起点、终点,重新绘制新的直线段;S3,修剪后产生的新图形,再放至被修剪图形中进行下一次的交点计算,直至修剪结束;S4,结束修剪,释放被修剪图形。本发明专利技术根据图形自身的几何属性进行修剪,能够适应各种场景。能够适应各种场景。能够适应各种场景。
【技术实现步骤摘要】
一种基于空间几何的图形修剪方法、装置及介质
[0001]本专利技术涉及图形
,具体来说,涉及一种基于空间几何的图形修剪方法、装置及介质。
技术介绍
[0002]图形修剪是指对于空间中任意二维图形,当图形上存在与其它图形的多个交点时,修剪任意两个交点之间的部分。复杂图形的修剪,往往可以分解成直线段等基本图形的修剪,因此基本图形的修剪一直是研究热点,例如, Liang
‑
Barsky算法、Sutherland
‑
Hodgeman算法等,这些算法要求修剪多边形是矩形,Greiner
‑
Hormann算法、Weiler算法等的修剪多边形可以是一般多边形,这些算法能够高效地去除二维图形超出修剪多边形的部分,但是无法实现任意多个二维图形作为修剪图形时,任意多个二维图形的局部修剪问题。
[0003]由于二维多边形的多样性,目前已有图形修剪方法无法满足所有类型的图形一起作为修剪图形时各类图形的修剪需求。
[0004]本文提供的背景描述用于总体上呈现本公开的上下文的目的。除非本文另外指示,在该章节中描述的资料不是该申请的权利要求的现有技术并且不要通过包括在该章节内来承认其成为现有技术。
技术实现思路
[0005]针对相关技术中的上述技术问题,本专利技术提出一种基于空间几何的图形修剪方法,其包括如下步骤:
[0006]S1,获取需要修剪的图形,并获取输入的被修剪图形;
[0007]S2,被修剪图形是直线段,计算所有修剪图形与直线段交点,再计算这些交点至直线段起点距离;再记录修剪点至直线段起点距离;将所有距离从小至大排序,根据距直线段起点距离获取与修剪点相邻的图形交点;将直线段起点与左交点作为新的直线段的起点、终点,将右交点与直线段终点作为起点、终点,重新绘制新的直线段;
[0008]S3,修剪后产生的新图形,再放至被修剪图形中进行下一次的交点计算,直至修剪结束;
[0009]S4,结束修剪,释放被修剪图形。
[0010]具体的,步骤S2还包括:
[0011]S21,被修剪图形是多线段,遍历多线段的每一个直线段,根据直线段与其它图形求交点的方法,计算处于这根直线段上的图形交点,再记录该交点至多线段起点的距离和编号;计算修剪点到多线段起点的距离,将所有图形交点与多线段起点的距离从小至大排序,根据图形交点与多线段起点的距离获取修剪点相邻的图形交点;最后,改变多线段的端点列表,重新绘制新的多线段。
[0012]具体的,步骤S2还包括:
[0013]S22,被修剪图形是圆,记录修剪点与圆心连线距X轴的角度;记录被修剪的圆与修
剪图形的所有交点,再计算所有交点与圆心连线与X轴的角度;将所有角度从小至大排序,获取修剪点的相邻图形交点,以修剪点的两个相邻交点作为新圆弧的起点、终点,绘制新的圆弧。
[0014]具体的,步骤S22还包括:
[0015]S23,被修剪图形是圆弧,判断交点是否在圆弧上,若交点不处于圆弧上,则该交点不作为计算交点。
[0016]具体的,步骤S1具体包括通过框选的方式来获取修剪图形。
[0017]第二方面,本专利技术另一个实施例公开了一种基于空间几何的图形修剪装置,其包括如下单元:
[0018]被修剪图形获取单元,用于获取需要修剪的图形,并获取输入的被修剪图形;
[0019]修剪单元,用于在被修剪图形是直线段,计算所有修剪图形与直线段交点,再计算这些交点至直线段起点距离;再记录修剪点至直线段起点距离;将所有距离从小至大排序,根据距直线段起点距离获取与修剪点相邻的图形交点;将直线段起点与左交点作为新的直线段的起点、终点,将右交点与直线段终点作为起点、终点,重新绘制新的直线段;
[0020]新图形产生单元,修剪后产生的新图形,再放至选择的二维图形中进行下一次的交点计算,直至修剪结束;
[0021]释放单元,结束修剪,释放选择的二维图形。
[0022]具体的,多线段修剪单元,被修剪图形是多线段,遍历多线段的每一个直线段,根据直线段与其它图形求交点的方法,计算处于这根直线段上的图形交点,再记录该交点至多线段起点的距离和编号;计算修剪点到多线段起点的距离,将所有图形交点与多线段起点的距离从小至大排序,根据图形交点与多线段起点的距离获取修剪点相邻的图形交点;最后,改变多线段的端点列表,重新绘制新的多线段。
[0023]具体的,圆修剪单元,被修剪图形是圆,记录修剪点与圆心连线距X轴的角度;记录被修剪的圆与修剪图形的所有交点,再计算所有交点与圆心连线与X轴的角度;将所有角度从小至大排序,获取修剪点的相邻图形交点,以修剪点的两个相邻交点作为新圆弧的起点、终点,绘制新的圆弧。
[0024]具体的,圆弧修剪单元,,被修剪图形是圆弧,即在修剪图形是圆的计算基础上增加交点是否在圆弧上的判断,若交点不处于圆弧上,则该交点不作为计算交点。
[0025]第三方面,本专利技术的另一个实施例公开了一种非易失性存储介质,所述非易失性存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。
[0026]本实施例能够实现任意数量任意类型的二维图形作为修剪图形时,任意数量任意类型的被修剪图形的修剪。本实施例根据图形自身的几何属性进行修剪,能够适应各种场景。
附图说明
[0027]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获
得其他的附图。
[0028]图1是本专利技术实施例提供一种基于空间的图形修剪方法流程示意图;
[0029]图2是本专利技术实施例提供的待修剪图形的用户界面示意图;
[0030]图3是本专利技术实施例提供的修剪点与被修剪图形示意图;
[0031]图4是本专利技术实施例提供的修剪后产生的新图形示意图;
[0032]图5是本专利技术实施例提供的直线段与修剪图形交点示意图;
[0033]图6是本专利技术实施例提供的直线段起点、修剪点示意图;
[0034]图7是本专利技术实施例提供的相邻交点示意图;
[0035]图8是本专利技术实施例提供的创建直线段示意图;
[0036]图9是本专利技术实施例提供的多线段的7个直线段示意图;
[0037]图10是本专利技术实施例提供的第4、5个直线段上的交点示意图;
[0038]图11是本专利技术实施例提供的交点距起点距离示意图;
[0039]图12是本专利技术实施例提供的修剪点至起点距离示意图;
[0040]图13是本专利技术实施例提供的创建新多线段示意图;
[0041]图14是本专利技术实施例提供的修剪点与圆心连线至x轴角度示意图;
[0042]图15是本专利技术实施例提供的被修剪的圆与修剪图形的交点示意图;
...
【技术保护点】
【技术特征摘要】
1.一种基于空间几何的图形修剪方法,其包括如下步骤:S1,获取需要修剪的图形,并获取输入的被修剪图形;S2,被修剪图形是直线段,计算所有修剪图形与直线段交点,再计算这些交点至直线段起点距离;再记录修剪点至直线段起点距离;将所有距离从小至大排序,根据距直线段起点距离获取与修剪点相邻的图形交点;将直线段起点与左交点作为新的直线段的起点、终点,将右交点与直线段终点作为起点、终点,重新绘制新的直线段;S3,修剪后产生的新图形,再放至被修剪图形中进行下一次的交点计算,直至修剪结束;S4,结束修剪,释放被修剪图形。2.根据权利要求1所述的方法,步骤S2还包括:S21,被修剪图形是多线段,遍历多线段的每一个直线段,根据直线段与其它图形求交点的方法,计算处于这根直线段上的图形交点,再记录该交点至多线段起点的距离和编号;计算修剪点到多线段起点的距离,将所有图形交点与多线段起点的距离从小至大排序,根据图形交点与多线段起点的距离获取修剪点相邻的图形交点;最后,改变多线段的端点列表,重新绘制新的多线段。3.根据权利要求1所述的方法,步骤S2还包括:S22,被修剪图形是圆,记录修剪点与圆心连线距X轴的角度;记录被修剪的圆与修剪图形的所有交点,再计算所有交点与圆心连线与X轴的角度;将所有角度从小至大排序,获取修剪点的相邻图形交点,以修剪点的两个相邻交点作为新圆弧的起点、终点,绘制新的圆弧。4.根据权利要求3所述的方法,步骤S22还包括:S23,被修剪图形是圆弧,判断交点是否在圆弧上,若交点不处于圆弧上,则该交点不作为计算交点。5.根据权利要求1所述的方法,步骤S1具体包括通过框选的方式来获取修剪图形。6.一种基于空间几何的图形修剪装置,其包括如下单元:被修剪图形获取单元,用于获...
【专利技术属性】
技术研发人员:李梦男,张琪,吴俊,
申请(专利权)人:同恩上海工程技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。