主权项 |
一种面向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排序。 |