发明名称 一种面向TIN构建的Peano排序方法
摘要 本发明涉及一种面向TIN构建的Peano排序方法,包括如下步骤:读入待排序的二维点集P;分解点集P为三个子点集,以调整点集P内点的存储顺序;依次分解三个子点集,以调整子点集内点的存储顺序;判断每个子点集是否分解完毕;等待所有子点集分解结束,即完成点集的Peano排序。本发明的方法能够直接根据点集的坐标来对点集进行Peano排序,从而摆脱对网格的依赖,能够有效地解决TIN构建过程中点集的Peano排序问题,大大减少了不必要的计算开销,进而提高TIN构建的算法效率。
申请公布号 CN105955985A 申请公布日期 2016.09.21
申请号 CN201610243083.6 申请日期 2016.04.19
申请人 南京师范大学 发明人 刘年涛;周良辰;林冰仙
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 南京知识律师事务所 32207 代理人 李媛媛
主权项 一种面向TIN构建的Peano排序方法,其特征在于,包括以下步骤:(1)读入待排序的二维点集P={p<sub>i</sub>,i∈[0,n)},包括n个点的X坐标和Y坐标,定义点集在坐标轴上的排序方向:升序Asc和降序Des,设初始点集P在X轴上的排序方向D<sub>x</sub>为升序Asc,在Y轴上的排序方向D<sub>y</sub>为升序Asc;(2)分解点集P以调整点集P内点的存储顺序:将点集P分为三部分:P<sub>1</sub>、P<sub>2</sub>和P<sub>3</sub>,具体过程为:计算点集P的X坐标<img file="FDA0000968296590000011.GIF" wi="36" he="87" />数<img file="FDA0000968296590000012.GIF" wi="55" he="80" />和X坐标<img file="FDA0000968296590000013.GIF" wi="32" he="90" />数<img file="FDA0000968296590000014.GIF" wi="71" he="81" />利用<img file="FDA0000968296590000015.GIF" wi="58" he="81" />和<img file="FDA0000968296590000016.GIF" wi="57" he="80" />调整点集P内点的存储顺序,以满足如下条件:如果排序方向D<sub>x</sub>是升序Asc,<img file="FDA0000968296590000017.GIF" wi="766" he="80" />如果排序方向D<sub>x</sub>是降序Des,<img file="FDA0000968296590000018.GIF" wi="771" he="83" />此时,设<img file="FDA0000968296590000019.GIF" wi="1264" he="99" />(3)分解点集P<sub>1</sub>以调整点集P<sub>1</sub>内点的存储顺序:将点集P<sub>1</sub>分为三个子点集:P<sub>11</sub>、P<sub>12</sub>和P<sub>13</sub>,具体过程为:计算点集P<sub>1</sub>的Y坐标<img file="FDA00009682965900000110.GIF" wi="33" he="87" />数<img file="FDA00009682965900000111.GIF" wi="55" he="83" />和Y坐标<img file="FDA00009682965900000112.GIF" wi="31" he="90" />数<img file="FDA00009682965900000113.GIF" wi="73" he="83" />利用<img file="FDA00009682965900000114.GIF" wi="56" he="83" />和<img file="FDA00009682965900000115.GIF" wi="58" he="79" />调整点集P<sub>1</sub>内点的存储顺序,以满足如下条件:如果排序方向D<sub>y</sub>是升序Asc,<img file="FDA00009682965900000116.GIF" wi="766" he="79" />如果排序方向D<sub>y</sub>是降序Des,<img file="FDA00009682965900000117.GIF" wi="771" he="84" />此时,设<img file="FDA00009682965900000118.GIF" wi="1323" he="99" />(4)分解点集P<sub>2</sub>以调整点集P<sub>2</sub>内点的存储顺序:将点集P<sub>2</sub>分为三个子点集:P<sub>21</sub>、P<sub>22</sub>和P<sub>23</sub>,具体过程为:计算点集P<sub>2</sub>的Y坐标<img file="FDA0000968296590000021.GIF" wi="33" he="95" />数<img file="FDA0000968296590000022.GIF" wi="53" he="82" />和Y坐标<img file="FDA0000968296590000023.GIF" wi="32" he="89" />数<img file="FDA0000968296590000024.GIF" wi="71" he="83" />利用<img file="FDA0000968296590000025.GIF" wi="57" he="82" />和<img file="FDA0000968296590000026.GIF" wi="54" he="82" />调整点集P<sub>2</sub>内点的存储顺序,以满足如下条件:如果排序方向D<sub>y</sub>是升序Asc,<img file="FDA0000968296590000027.GIF" wi="771" he="81" />如果排序方向D<sub>y</sub>是降序Des,<img file="FDA0000968296590000028.GIF" wi="768" he="83" />此时,设<img file="FDA0000968296590000029.GIF" wi="1323" he="95" />(5)分解点集P<sub>3</sub>以调整点集P<sub>3</sub>内点的存储顺序:将点集P<sub>3</sub>分为三个子点集:P<sub>31</sub>、P<sub>32</sub>和P<sub>33</sub>,具体过程为:计算点集P<sub>3</sub>的Y坐标<img file="FDA00009682965900000210.GIF" wi="33" he="95" />数<img file="FDA00009682965900000211.GIF" wi="54" he="82" />和Y坐标<img file="FDA00009682965900000212.GIF" wi="32" he="88" />数<img file="FDA00009682965900000213.GIF" wi="73" he="83" />利用<img file="FDA00009682965900000214.GIF" wi="56" he="80" />和<img file="FDA00009682965900000215.GIF" wi="56" he="82" />调整点集P<sub>3</sub>内点的存储顺序,以满足如下条件:如果排序方向D<sub>y</sub>是升序Asc,<img file="FDA00009682965900000216.GIF" wi="771" he="91" />如果排序方向D<sub>y</sub>是降序Des,<img file="FDA00009682965900000217.GIF" wi="772" he="81" />此时,设<img file="FDA00009682965900000218.GIF" wi="1322" he="97" />(6)对于步骤(2)、(3)、(4)和(5)中分解得到的子点集P<sub>11</sub>、P<sub>12</sub>、P<sub>13</sub>、P<sub>21</sub>、P<sub>22</sub>、P<sub>23</sub>、P<sub>31</sub>、P<sub>32</sub>和P<sub>33</sub>,逐个判断其中包含的点数是否大于1,如果是,则说明该子点集需要继续分解,以该子节点作为输入点集P,递归执行步骤(2)、(3)、(4)和(5),其中每个子点集的划分方向,依次为:(D<sub>x</sub>,D<sub>y</sub>)、(!D<sub>x</sub>,D<sub>y</sub>)、(D<sub>x</sub>,D<sub>y</sub>)、(D<sub>x</sub>,!D<sub>y</sub>)、(!D<sub>x</sub>,!D<sub>y</sub>)、(D<sub>x</sub>,!D<sub>y</sub>)、(D<sub>x</sub>,D<sub>y</sub>)、(!D<sub>x</sub>,D<sub>y</sub>)、(D<sub>x</sub>,D<sub>y</sub>),括号中!表示对排序方向取反方向;(7)等待所有子点集分解结束,即完成点集的Peano排序。
地址 210097 江苏省南京市鼓楼区宁海路122号