一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种石油地质图元的绘图方法

2022-08-31 03:09:51 来源:中国专利 TAG:


1.本发明涉及计算机图形学技术领域,尤其涉及一种石油地质图元的绘图方法。


背景技术:

2.多边形裁剪算法被广泛应用于计算机图形学、地理信息系统等领域,是计算机图形学许多 重要问题的基础,其主要目的是裁剪掉被裁减多边形(又称实体多边形)位于裁剪多边形之外 的部分。在石油地质图元绘制时,需将石油地质图元数据在矩形视窗进行显示,有时也会遇到 需要剪裁的情景,需要根据石油地质图元数据与矩形视窗的重合区域的多边形进行填充、剪裁, 以节省绘图的时空复杂度,提高绘图效率。
3.现有技术至少存在以下不足:
4.1.利用计算机绘制石油地质图元数据时,会因石油地质图元多边形超出视窗区域而产生绘图 冗余、增加时空复杂度、降低绘图时效问题。


技术实现要素:

5.为解决现有技术中存在的精度不够问题,本发明提供了一种石油地质图元的绘图方法,导 入石油地质图元数据,通过选取石油地质图元数据多边形的第一个在视窗内部的点为起点,逐 次遍历分析多边形各边与矩形视窗边界的空间关系,得到矩形视窗内多边形的边界点,从而裁 剪掉无效区域、降低绘图时空复杂度。本发明石油地质图元在矩形视窗显示时需要裁剪的情况, 具有较高的二维图元绘制时空效率。
6.本发明人提供了一种石油地质图元的绘图方法,包括如下步骤:
7.预处理步骤,
8.s1000:输入石油地质图元数据多边形的顶点坐标数据集a’和矩形视窗的坐标数据,为多 边形的顶点和多边形各边、矩形视窗的顶点和矩形视窗的各边编号;所述石油地质图元数据包 括如下多边形填充图元:褶曲、断层、单斜、尖灭、岩性充填;
9.s2000:创建搜索循环链表a和重合区域顶点集b;
10.s3000:将所述多边形顶点坐标数据集a’中各顶点依次存入搜索循环链表a,将所述多边 形各边确定为矢量边;根据所述多边形各矢量边起点和终点相对于所述矩形视窗的位置,将各 矢量边与所述矩形视窗的交点确定为出点或入点;
11.其中,
12.矢量边的起点在所述矩形视窗内,终点在所述矩形视窗外时,将该矢量边与所述矩形视窗 的交点确定为出点,出点所在矩形视窗边记为outline;
13.矢量边的起点在所述矩形视窗外,终点在所述矩形视窗内时,将该矢量边与所述矩形视窗 的交点确定为入点,入点所在矩形视窗边记为inline;
14.s4000:根据所述多边形的各顶点与所述矩形视窗的相对位置,得到所述多边形与所述矩 形视窗的空间关系;
15.s5000:根据所述多边形与所述矩形视窗的空间关系,确定重合区域,如重合区域
非空或 非所述多边形或非所述矩形视窗,执行如下操作:
16.s5001:
17.将所述多边形在所述矩形视窗内的第一个顶点作为所述搜索循环链表a的起点
18.a0,重新进行排序,执行主分析步骤;
19.或,
20.若找到与所述矩形视窗有两个交点的边,将顺序找到的第一条边与所述矩形视窗 的两个交点的中点m0插入所述搜索循环链表a中所述第一条边的起点之后,作为所 述搜索循环链表a的新起点a0,重新进行排序,执行主分析步骤;
21.主分析步骤,
22.s6000:将所述搜索循环链表a中起点a0添加到重合区域顶点集b;
23.s7000:令指针指向所述搜索循环链表a中的起点a0;
24.s8000:判断当前指针指向的多边形的顶点是否在所述矩形视窗内:
25.若当前多边形顶点位于所述矩形视窗内,则将该多边形顶点添加到重合区域顶点集
26.b;若当前多边形顶点不在所述矩形视窗内,则根据所述多边形各边与所述矩形视窗交点 个数,确定需要添加到重合区域顶点集b的点,将需要添加到重合区域顶点集b的点添加
27.到重合区域顶点集b;
28.若当前多边形的顶点不为最后一个顶点,令指针指向当前顶点的下一顶点,执行步骤 s8000;否则,执行步骤s9000;
29.s9000:输出重合区域,退出程序;
30.确定的所述需要添加到重合区域顶点集b的点至少包括如下一种点:所述多边形的若干 顶点、所述多边形与所述矩形视窗交点和所述矩形视窗的若干顶点。
31.优选地,所述主分析步骤中,根据所述多边形各边与所述矩形视窗交点个数,确定需要添 加到重合区域顶点集b的点和需要添加的矩形视窗的若干顶点,具体包括如下步骤:
32.s8100:将第一个不在所述矩形视窗内的点a
i 1
与其前一点ai组成的边与所述矩形视窗的 交点p1添加到重合区域顶点集b中点ai之后;
33.s8200:在所述搜索循环链表中所述点a
i 1
之后,依次选择两个相邻点a
fd1
和a
fd2
,判断 a
fd1afd2
与所述矩形视窗的交点个数,并执行相应操作:
34.s8210:若线段a
fd1afd2
与所述矩形视窗有没有交点,则返回s8200,向后寻找新的 a
fd1
和a
fd2
进行判定;
35.s8220:若线段a
fd1afd2
与所述矩形视窗有两个交点,则将这两个交点的中点m添加 到所述搜索循环链表a中,令a
fd2
为点m,则a
fd1afd2
与所述矩形视窗有一个交点p2, 执行步骤s8300;
36.s8230:若线段a
fd1afd2
与所述矩形视窗有一个交点p2,执行步骤s8300;
37.s8300:构建位于所述矩形视窗外的临时多边形outpoly,以p1为起点依次添加介于p1和 p2之间所述多边形的顶点到outpoly中,最后添加p2;
38.s8400:根据出点和入点所在多边形边的序号,以及outpoly中各顶点坐标信息,在
重合区 域顶点集b的尾部插入所述矩形视窗的若干顶点,最后添加p2;
39.s8500:判断a
fd2
是否为a0,
40.若a
fd2
为a0,则在重合区域顶点集b的尾部插入a
fd2
,返回执行步骤s6000;
41.否则,返回执行步骤s9000。
42.优选地,在步骤s8400中,根据出点和入点所在多边形边的序号,在重合区域顶点集b的 尾部插入所述矩形视窗的若干顶点,包括如下步骤:
43.s8410:设交点p1为边a
iai 1
与所述矩形视窗的第outline条边的交点,交点p2为线段 a
fd1afd2
与所述矩形视窗第inline条边的交点,由步骤s8220可知,p1为出点,p2为入点,由 点p1,a
i 1
,

,a
fd1
,p2组成一个临时多边形outpoly;
44.s8420:判定所述矩形视窗的各顶点是否在临时多边形outpoly内,确定出点p1和入点p2所在边的关系;
45.s8430:根据出点p1和入点p2所在边的关系,确定需要添加的所述矩形视窗顶点的个数;
46.s8440:根据出点p1出发沿所述矩形视窗的四边到达入点p2的路径所经过的所述矩形视 窗顶点的顺序,确定添加顶点的顺序;
47.s8450:根据需要添加的所述矩形视窗顶点的个数和添加顶点的顺序,在重合区域顶点集 b的尾部插入所述矩形视窗的若干顶点。
48.优选地,步骤s8430中,根据出点p1和入点p2所在边的关系,确定需要添加的所述矩形 视窗顶点的个数,具体包括:
49.若第outline边和第inline边是对边,则需添加两个顶点;
50.若第outline边和第inline边是邻边,则需添加一个或三个顶点;
51.若第outline边和第inline边为同一条边,则需添加零个或四个顶点;
52.优选地,步骤s8440中,具体为:从出点p1出发沿所述矩形视窗的四边引出到达入点p2的路径,选择包括需要添加的顶点的路径,根据路径经过需要添加顶点的顺序,确定添加顶点 的顺序。
53.与现有技术相对比,本发明的有益效果如下:
54.(1)本发明通过选取多边形第一个内部点为始点,逐次遍历分析多边形各边与矩形视窗 边界的空间关系,得到视窗内多边形的边界点,从而裁剪掉无效区域、降低绘图时空复杂度;
55.(2)本发明设计了一种新的在已知出点和入点及经过的多边形顶点情况下采用的添加矩 形视窗顶点的算法,适用于循环链表存储的多边形顶点集;且适用于任意凹凸多边形与矩形相 交的情况,可准确得到重合区域的多边形顶点集;
56.(3)本发明判断矩形视窗顶点是否在临时多边形内的算法,适用于判断任一点是否在任 一多边形内的判断,该算法对经典的引射线法进行了算法优化和精细考虑,判断p点是否不在 多边形内时采用首先判断是否不在其外接矩形中,可减少不必要的计算判断;采用对射线长度 取有限长线段pp’,并采用判断线段pp’是否与依次取出的两个点组成的线段c
ici 1
是否有不为 ci的交点的方法,简化了当射线穿过多边形顶点时的传统计数算法,提高了判定点是否在任意 凸凹多边形内的时效。
附图说明
57.图1为本发明的一个实施例的总流程图;
58.图2为本发明的一个实施例的预处理步骤的流程图;
59.图3为本发明的一个实施例的主分析步骤的流程图;
60.图4为本发明的一个实施例的判断矩形视窗顶点是否在临时多边形内的流程图;
61.图5a为本发明的一个实施例在重合区域顶点集b尾部添加矩形顶点算法时出点和入点在 同一边的情况示意图;
62.图5b为本发明的一个实施例在重合区域顶点集b尾部添加矩形顶点算法时出点和入点在 邻边的情况示意图;
63.图5c为本发明的一个实施例在重合区域顶点集b尾部添加矩形顶点算法时出点和入点在 对边的情况示意图;
64.图6a为本发明处理单斜地层模型石油地质图元可视化编程测试的一个实施例;
65.图6b为本发明处理背斜地层模型石油地质图元可视化编程测试的一个实施例;
66.图6c为本发明处理断层地层模型石油地质图元可视化编程测试的一个实施例;
67.图7为本发明的一个实施例的流程图。
具体实施方式
68.下面结合附图1-5、图7以及图6a-图6c,对本发明的具体实施方式作详细的说明。
69.本发明人提供了一种石油地质图元的绘图方法,包括如下步骤:
70.预处理步骤,
71.s1000:输入石油地质图元数据多边形的顶点坐标数据集a’和矩形视窗的坐标数据,为多 边形的顶点和多边形各边、矩形视窗的顶点和矩形视窗的各边编号;所述石油地质图元数据包 括如下多边形填充图元:褶曲、断层、单斜、尖灭、岩性充填;
72.s2000:创建搜索循环链表a和重合区域顶点集b;
73.s3000:将所述多边形顶点坐标数据集a’中各顶点依次存入搜索循环链表a,将所述多边 形各边确定为矢量边;根据所述多边形各矢量边起点和终点相对于所述矩形视窗的位置,将各 矢量边与所述矩形视窗的交点确定为出点或入点;
74.其中,
75.矢量边的起点在所述矩形视窗内,终点在所述矩形视窗外时,将该矢量边与所述矩形视窗 的交点确定为出点,出点所在矩形视窗边记为outline;
76.矢量边的起点在所述矩形视窗外,终点在所述矩形视窗内时,将该矢量边与所述矩形视窗 的交点确定为入点,入点所在矩形视窗边记为inline;
77.s4000:根据所述多边形的各顶点与所述矩形视窗的相对位置,得到所述多边形与所述矩 形视窗的空间关系;
78.s5000:根据所述多边形与所述矩形视窗的空间关系,确定重合区域,如重合区域非空或 非所述多边形或非所述矩形视窗,执行如下操作:
79.s5001:
80.将所述多边形在所述矩形视窗内的第一个顶点作为所述搜索循环链表a的起点
81.a0,重新进行排序,执行主分析步骤;
82.或,
83.若找到与所述矩形视窗有两个交点的边,将顺序找到的第一条边与所述矩形视窗 的两个交点的中点m0插入所述搜索循环链表a中所述第一条边的起点之后,作为所 述搜索循环链表a的新起点a0,重新进行排序,执行主分析步骤;
84.主分析步骤,
85.s6000:将所述搜索循环链表a中起点a0添加到重合区域顶点集b;
86.s7000:令指针指向所述搜索循环链表a中的起点a0;
87.s8000:判断当前指针指向的多边形的顶点是否在所述矩形视窗内:
88.若当前多边形顶点位于所述矩形视窗内,则将该多边形顶点添加到重合区域顶点集
89.b;若当前多边形顶点不在所述矩形视窗内,则根据所述多边形各边与所述矩形视窗交点 个数,确定需要添加到重合区域顶点集b的点,将需要添加到重合区域顶点集b的点添加
90.到重合区域顶点集b;
91.若当前多边形的顶点不为最后一个顶点,令指针指向当前顶点的下一顶点,执行步骤 s8000;否则,执行步骤s9000;
92.s9000:输出重合区域,退出程序;
93.确定的所述需要添加到重合区域顶点集b的点至少包括如下一种点:所述多边形的若干 顶点、所述多边形与所述矩形视窗交点和所述矩形视窗的若干顶点。
94.作为优选实施方式,所述主分析步骤中,根据所述多边形各边与所述矩形视窗交点个数, 确定需要添加到重合区域顶点集b的点和需要添加的矩形视窗的若干顶点,具体包括如下步 骤:
95.s8100:将第一个不在所述矩形视窗内的点a
i 1
与其前一点ai组成的边与所述矩形视窗的 交点p1添加到重合区域顶点集b中点ai之后;
96.s8200:在所述搜索循环链表中所述点a
i 1
之后,依次选择两个相邻点a
fd1
和a
fd2
,判断 a
fd1afd2
与所述矩形视窗的交点个数,并执行相应操作:
97.s8210:若线段a
fd1afd2
与所述矩形视窗有没有交点,则返回s8200,向后寻找新的 a
fd1
和a
fd2
进行判定;
98.s8220:若线段a
fd1afd2
与所述矩形视窗有两个交点,则将这两个交点的中点m添加 到所述搜索循环链表a中,令a
fd2
为点m,则a
fd1afd2
与所述矩形视窗有一个交点p2, 执行步骤s8300;
99.s8230:若线段a
fd1afd2
与所述矩形视窗有一个交点p2,执行步骤s8300;
100.s8300:构建位于所述矩形视窗外的临时多边形outpoly,以p1为起点依次添加介于p1和 p2之间所述多边形的顶点到outpoly中,最后添加p2;
101.s8400:根据出点和入点所在多边形边的序号,以及outpoly中各顶点坐标信息,在重合区 域顶点集b的尾部插入所述矩形视窗的若干顶点,最后添加p2;
102.s8500:判断a
fd2
是否为a0,
103.若a
fd2
为a0,则遍历完成,程序结束;
104.否则,返回执行步骤7000,继续遍历所述搜索循环链表a中后续的多边形顶点。
105.作为优选实施方式,在步骤s8400中,根据出点和入点所在多边形边的序号,在重合区域 顶点集b的尾部插入所述矩形视窗的若干顶点,包括如下步骤:
106.s8410:设交点p1为边a
iai 1
与所述矩形视窗的第outline条边的交点,交点p2为线段 a
fd1afd2
与所述矩形视窗第inline条边的交点,由步骤s8220可知,p1为出点,p2为入点,由 点p1,a
i 1
,

,a
fd1
,p2组成一个临时多边形outpoly;
107.s8420:判定所述矩形视窗的各顶点是否在临时多边形outpoly内,确定出点p1和入点p2所在边的关系;
108.s8430:根据出点p1和入点p2所在边的关系,确定需要添加的所述矩形视窗顶点的个数;
109.s8440:根据出点p1出发沿所述矩形视窗的四边到达入点p2的路径所经过的所述矩形视 窗顶点的顺序,确定添加顶点的顺序;
110.s8450:根据需要添加的所述矩形视窗顶点的个数和添加顶点的顺序,在重合区域顶点集 b的尾部插入所述矩形视窗的若干顶点。
111.作为优选实施方式,步骤s8420中,判定所述矩形视窗的任一顶点p是否在临时多边形 outpoly内的步骤包括:
112.s8421:输入顶点p的坐标和所述多边形outpoly顶点的坐标点集c;
113.s8422:根据点集c横坐标的最大值和最小值,得到一个矩形区域r;
114.s8423:判断点p是否在矩形区域r内:
115.如果不在,则点p在所述多边形outpoly外,结束判断;
116.如果在,取另外一点p’,使pp’为一条水平线段,p’点横坐标与点集c横坐标的最大
117.值的差大于1,执行步骤s8424;
118.s8424:从点集c中第一个点开始,依次循环取相邻的两个点ci和c
i 1
,相交次数从0开 始,取到点集c中的最后一个点为止;
119.判断每次取出的两个点组成的线段c
ici 1
与线段pp’是否有不为ci的交点或两线段有
120.重合部分:
121.如果有,相交次数加1;
122.如果没有,取下一相邻的点;
123.取到最后一组线段时,如果相交次数为奇数,则点p在所述多边形outpoly内;如果相 交次数为偶数,则点p在所述多边形outpoly外。
124.作为优选实施方式,步骤s8430中,根据出点p1和入点p2所在边的关系,确定需要添加 的所述矩形视窗顶点的个数,具体包括:
125.若第outline边和第inline边是对边,则需添加两个顶点;
126.若第outline边和第inline边是邻边,则需添加一个或三个顶点;
127.若第outline边和第inline边为同一条边,则需添加零个或四个顶点;
128.作为优选实施方式,步骤s8440中,具体为:从出点p1出发沿所述矩形视窗的四边引出 到达入点p2的路径,选择包括需要添加的顶点的路径,根据路径经过需要添加顶点的顺序, 确定添加顶点的顺序。
129.实施例1
出点p1,在p1后依次加入ai 1、ai 2

afd1,再加入入点p2。根据多边形outpoly的点坐 标、p1、p2所在的边号outline、inline,判定分析在多边形b尾部需要添加的矩形视窗r的 顶点及添加顺序,添加算法见后文;添加完顶点后,再将p2插入b的尾部,进入步骤12)。
152.11)此时说明afd在矩形视窗r外部。将afd1afd2与视窗的两个交点的中点m添加到 原多边形a的afd1后,多边形a顶点总数n=n 1,回到步骤8)。(注:此时afd2点变为 了m)
153.12)若fd2不为0,说明还没有遍历所有顶点,则令i=fd2,迭代器iter1指向ai,并将 ai添加到b尾部,回到步骤2);否则进入步骤13)。
154.13)输出多边形端点集b,结束。
155.实施例3
156.根据本发明的一个具体实施方案,下面详细说明本发明中判断矩形视窗某一顶点p是否在 临时多边形内的算法的具体实施。
157.设输入临时多边形点集为c,需要判断矩形视窗某一顶点p是否在临时多边形c内,具体 步骤包括:
158.1)遍历c所有点,得到横纵坐标的最大最小值,分别为xmax、ymax、xmin、ymin,根 据此四个参数形成一个矩形区域r,左上角坐标为(xmin,ymin),右下角坐标为(xmax, ymax)。
159.2)判断p是否在矩形区域r内,即判断是否同时满足xmin≤x≤xmax,ymin≤y≤ymax,若 满足,则进入步骤3);若不满足,则输出点p在多边形c外部,结束。
160.3)以p点为端点,需引一条水平向右的射线,我们设右端点为p’(xmax α,p.y),其中α 为一个大于等于1的整数,由于p’横坐标大于c的所有点的横坐标,从而可模拟射线。(注: 之所以需使α≥1是由于点坐标为整形,在进行求线段交点计算后,交点坐标需进行四舍五入化 为整形,此时真实的交点坐标与输出的交点坐标值会产生不超过0.5的误差,因此需使得α≥1 来避免求pp’和多边形c的边求交点时产生错误)
161.4)设整形变量j=0用来保存pp’和多边形c边交点个数。
162.5)遍历c的所有边,每次计算pp’与当前边的交点,若有交点且交点不是当前边的起点, 或pp’和当前边平行且有一部分重合,则j=j 1。注:由于当pp’与c某条边交点刚好在该边端 点(设为点h)时,则pp’与该边的下一条边或上一条边必然有一个交点也是点h,则会造成 该交点计数重复,为避免这种情况出现,我们要求交点不得为c当前边的起点;此外,我们 定义若pp’和当前边有重合区域时,记作有一个交点。
163.6)若交点总个数j为奇数,则输出p在多边形c内;否则输出p在多边形c外。
164.实施例4
165.根据本发明的一个具体实施方案,图5a、图5b和图5c为顶点添加算法的三种具体情况, 结合本图实例,下面对本发明中在重合区域点集b中添加矩形视窗顶点的算法原理进行说明:
166.根据出点和入点位置相对关系,可分为三种情况:出点和入点位于同一条边、出点和入点 位于邻边和出点和入点位于对边。
167.1)若入点出点位于同一条边,则需要添加的顶点数为0或4。可检查矩形任意一顶点q 是否在多边形outpoly内,若在,则此时需要添加的顶点数为4,需分析添加矩形视窗顶点的 顺序为顺时针或逆时针,以及从哪一个顶点开始添加,可以通过判断入点和出点的相
对位置来 判定。以图5a为例,若出点为p1,入点为p2,则需要添加的顶点顺序为:1-4-3-2;若出点为 p2,入点为p1,添加顺序为:2-3-4-1。出点和顶点同时在其他边时同理。q不在outpoly内, 则需要添加的矩形视窗顶点为0。
168.2)若出点和入点位于邻边,则需要添加的顶点数为1或3,需检测出点和入点所在矩形两 条边的交点m是否在多边形outpoly内,若在,则需要添加的顶点为。若不在,则此时需要 添加的顶点为除m点外的其他3个顶点,我们需要知道添加的顺序以及起点,我们可根据出 点和入点的位置进行判定。如图5b,若出点为p1,入点为p2,则添加顺序为1-4-3;反之添 加顺序为3-4-1。出点和入点在其他边时同理。
169.3)若出点和入点位于对边,则需要添加的顶点数为2,需知添加的顶点的编号及顺序。需 要添加的顶点在此只有两种可能,如图5a、图5b和图5c,根据在此情况下进出点位置,需要 添加的顶点为2、3或1、4。我们任选一点判定是否在多边形c中,从而可知道需要添加哪两 个顶点。图5c的情况我们判定1号端点在多边形内,故需要添加的顶点为1和4号。得到需 要添加的顶点后,通过出点和入点的相对关系进行判定添加顺序。如图5c,若p1为出点p2 为入点,则添加顺序为1-4;否则添加顺序为4-1。其他情况同理。
170.实施例5
171.根据本发明的一个具体实施方案,下面结合图6a-图6c,对本发明的方法进行详细说明。
172.基于本发明算法开发了处理石油地质图元的可视化测试软件图6a-图6c分别为应用本发明算法对单斜地层、向斜、断层的石油地质图元矢量图形与矩形视窗求重合区域的效果示例,由图可见,在矩形视窗外的石油地质图元矢量图形,根据本发明的方法,确定与矩形视窗的交点,将交点添加到重合区域点集,并进行剪裁。
173.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来 说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替 换、改进等,均包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献