2024年8月22日发(作者:壤驷华)
凸多边形顶点排序问题的一种分治算法
【摘 要】对凸多边形顶点排序问题做深入分析,提
出一种基于矢量方向比较的凸多边形顶点排序分治算法。首
先深入分析凸多边形顶点排序问题的背景;其次提出基于矢
量方向比较的凸多边形顶点排序分治算法;最后通过C++编程
实现该算法,并分析该算法的时间复杂度和空间复杂度。该
算法已经应用在实际项目中,证明该算法是简单高效的。
【关键词】凸多边形 顶点排序 凸包问题 分治算法
一、问题描述
(一)凸包问题和凸多边形定义
凸包问题[1]是计算机图形学中一个很重要的基础问
题,在GIS、CAD等领域有广泛的应用。对凸包问题的求解有
不少高效算法,例如卷包裹算法[2],分治算法[3]等。简单
多边形[4]的凸包问题是其中一个特例,而凸多边形顶点排序
问题又是简单多边形凸包问题的一个特例,目前对其研究不
多。下面给出凸多边形的严格定义。
[定义1]在一个简单多边形中,如果所有顶点都是凸顶
点[5],则称该多边形是一个凸多边形。
(二)凸多边形顶点排序问题
作者在开发有限元系统时遇到这样的问题,一个空间
六面体网格单元被一个平面切割, 12条边可能与切割面相交
于n(3<=n<=6)个点,n点连接后必然形成一个凸多边形。
六面体与平面相交后只有n个交点的坐标信息,顶点
的连接顺序就是我们要解决的凸多边形顶点排序问题。
二、算法分析
首先可以简化问题:当切平面与某坐标平面不垂直
时,可以将n个交点投影到该坐标平面(例如xoy平面)
上,这样将三维问题简化为二维问题。
在二维坐标平面上的n个点排序就是一个典型的凸包
问题,我们提出一种全新的快速分治算法。基础思想就是找
一个凸多边形的内部点,然后将该点与所有n个顶点连接形
成n个矢量,最后根据矢量与坐标轴夹角将n个点排序。假
设P为凸多边形内部任意点,PQ为x轴正方向,A到F是凸
多边形的6个顶点。显然按照PA、PB等矢量方向与PQ的逆
时针夹角从小到大的顺序,可以将所有6个顶点逆时针排
序,反之亦可。
该算法具体实现时,有以下几个问题需要解决。
(一)如何选择投影坐标面。
任取三个顶点所在平面与某坐标面不垂直时,我们可
以投影到该坐标面。一个平面不可能同时与三个坐标面垂
直,所以总能找到一个坐标面来投影。计算可以利用叉积求
法向量的方式,但是该方式计算量大,我们可以逆用如下定
理。
[定理1]:任取三点的xy坐标比值相同,则该平面必
然垂直于xoy平面。
简单证明如下:当(Xa/Ya) = (Xb/Yb) =
(Xc/Yc)时,a、b、c三点在xoy平面上的投影共线,则
a、b、c三点所在平面垂直于xoy面。同理可得到xoz和yoz
平面的类似结论。
(二)如何选择凸多边形内部点。
任取三顶点,求其几何中心P,则P点必然在凸多边形
内。如公式(2.1)所示。
Xp=(Xa+Xb+Xc)/3
Yp=(Ya+Yb+Yc)/3
Xp=(Ya+Yb+Yc)/3 (2.1)
(三)如何对各顶点排序。
夹角的cos值在[0,π]之间随角度增大而减小,
[π,2π]之间随角度增大而增大。因此,我们在对所有点排
序前,需要将全部点分为两个子集。以在xoy平面的投影为
例,按照y坐标是否大于P点可以将全部点分为“上部点”
(例如{ABC})和“下部点”(例如{DEF})两个子集。对
“上部点”我们按照cos值降序排列,对“下部点”按照cos
值升序排列,这样就得到全部点的排列。而这种将问题分
解,减小问题规模分而治之的思想正是典型的“分治”算
法。cos值可以按照公式(2.2)求得。
cos(QPA)=(Xa-Xp)/(Ya-Yp) (2.2)
三、算法实现和复杂度分析
在c++中函数的声明形式为:int sortpolynode(int
n, double *nodes)。其中函数返回值为排序的顶点数,返
回值为-1时表示函数出错。参数n为多边形的顶点数,nodes
是一个长度为3n的数组,存储n个顶点排序前的xyz坐标;
排序后的顶点坐标仍然放在该数组中,实现数据的输出。
算法定义的辅助变量主要包括几个double类型的
vector,包括upnodes、downnodes、upcoss、downcoss。前
两个分别存储上部点和下部点的坐标,后两个存对应顶点与
内部点P形成的矢量与横坐标正方向夹角的余弦值。前两个
vector长度相加为3n,后两个相加等于n,另外还需要一些
零散辅助空间,所以算法的空间复杂度为O(n)。
算法运行时,需要四个重要的循环。第一个循环次数
为n,将n个顶点按照是否高于内部点p的纵坐标划分到“上
部点”upnodes和“下部点”downnodes中。第二个循环次数
为n,用于求所有顶点的cos值。第三个循环利用选择法或起
泡法对upnodes、downnodes、upcoss和downcoss排序,循
环次数为:(n-1)!=n(n-1)/2。第四个循环用于将
upnodes和downnodes数据复制回nodes中作为函数输出,循
环次数为n。所以整个算法的时间复杂度为O(n^2)。
四、结语
通过上述分析可知,该算法时空效率都很高。该算法
已经应用在实际项目中,实践证明该算法是准确高效的。
参考文献:
[1] (美)莱维丁.算法设计与分析基础[M].北京:清
华大学出版社,2007:53-105.
[2] 宋丽,姜旭东.卷包裹法求凸包问题算法分析与程
序实现[J].牡丹江师范学院学报(自然科学版), 2005,
04期:18-19.
[3] 刘新,刘任任.一种改进的构建凸包的分治算法
[J].计算机工程与科学,2006,vol.28, NO.8:63-65.
[4] 刘润涛.简单多边形凸包的算法[J].哈尔滨理工大
学学报,2002,vol.7,NO.2:98-100.
[5] 吴尚智.一种求简单多边形凸包的算法[J].甘肃科
学学报,2000,vol.12,NO.4:11-13.
1Ppm4bmiJDnlLXot6/kvY7lip/ogJforr7orqHmioDmnK9kAgEPZB
YCZg8VBAANc3poaDIwMTMxNzE3NirosIjosIjnu4TlkIjpgLvovpH
nlLXot6/nmoTliIbmnpDlkozorr7orqEq6LCI6LCI57uE5ZCI6YC7
6L6R55S16Lev55qE5YiG5p6Q5ZKM6K6+6K6hZAICD2QWAmYPFQQAD
XN6aGgyMDEzMTcxNzcv5Z+65LqO55So5oi35L2T6aqM55qE55WM6Z
2i6K6+6K6h77yIVUnvvInnoJTnqbYv5Z+65LqO55So5oi35L2T6aq
M55qE55WM6Z2i6K6+6K6h77yIVUnvvInnoJTnqbZkAgMPZBYCZg8V
BAANc3poaDIwMTMxNzE3ODHln7rkuo5SRklE5oqA5pyv55qE56e75
Yqo55S15a2Q5ZWG5Yqh5bqU55So6K6+6K6hMeWfuuS6jlJGSUTmio
DmnK/nmoTnp7vliqjnlLXlrZDllYbliqHlupTnlKjorr7orqFkAgQ
PZBYCZg8VBAANc3poaDIwMTMxNzE3OTDlhbPkuo7nlLXlrZDkv6Hm
ga/mioDmnK/moIflh4bljJbnmoTlj5HlsZXliIbmnpAw5YWz5LqO5
5S15a2Q5L+h5oGv5oqA5pyv5qCH5YeG5YyW55qE5Y+R5bGV5YiG5p
6QZAIFD2QWAmYPFQQADXN6aGgyMDEzMTcxODBC5Z+O5biC5aSp54S
25rCU5bi455So6K6h6YeP5Luq6KGo5bel5L2c5Y6f55CG5Y+K6YCJ
5Z6L5bqU55So5rWF5p6QQuWfjuW4guWkqeeEtuawlOW4uOeUqOiuo
emHj+S7quihqOW3peS9nOWOn+eQhuWPiumAieWei+W6lOeUqOa1he
aekGQCBg9kFgJmDxUEAA1zemhoMjAxMzE3MTgxP0NMMjAwNeezu+W
Il0xFROeUteWtkOmAmuiur+Wxj+aOp+WItuezu+e7n+eahOWuieij
heS9v+eUqOeglOeptj9DTDIwMDXns7vliJdMRUTnlLXlrZDpgJror
q/lsY/mjqfliLbns7vnu5/nmoTlronoo4Xkvb/nlKjnoJTnqbZkAg
cPZBYCZg8VBAANc3poaDIwMTMxNzE4MhjnlLXlrZDnur/ot6/lrp7
pqozliIbmnpAY55S15a2Q57q/6Lev5a6e6aqM5YiG5p6QZAIID2QW
AmYPFQQADXN6aGgyMDEzMTcxODM35Z+65LqOVlhNTOaKgOacr+eah
OWkmua4oOmBk+mAmuiur+W5s+WPsOeahOeglOeptuWunui3tTfln7
rkuo5WWE1M5oqA5pyv55qE5aSa5rig6YGT6YCa6K6v5bmz5Y+w55q
E56CU56m25a6e6Le1ZAIJD2QWAmYPFQQADXN6aGgyMDEzMTcxODQw
55S15a2Q6YCa6K6v6K6+5aSH55qE5Y+v6Z2g5oCn6K6+6K6h5oqA5
pyv6K666L+wMOeUteWtkOmAmuiur+iuvuWkh+eahOWPr+mdoOaAp+
iuvuiuoeaKgOacr+iuuui/sGQCCg9kFgJmDxUEAA1zemhoMjAxMzE
3MTg1ReeUteWtkOW8j+eUteiDveihqOWcqOajgOWumui/h+eoi+S4
reW6lOazqOaEj+eahOmXrumimOWPiuino+WGs+WKnuazlUXnlLXlr
ZDlvI/nlLXog73ooajlnKjmo4Dlrprov4fnqIvkuK3lupTms6jmhI
/nmoTpl67popjlj4rop6PlhrPlip7ms5VkAgsPZBYCZg8VBAANc3p
oaDIwMTMxNzE4NifnlLXlrZDpgJrorq/kuqfkuJrnmoTlj5HlsZXn
irblhrXliIbmnpAn55S15a2Q6YCa6K6v5Lqn5Lia55qE5Y+R5bGV5
4q25Ya15YiG5p6QZAIMD2QWAmYPFQQADXN6aGgyMDEzMTcxODct5p
aw5pe25pyf55S15a2Q6YCa6K6v55qE6aKE57yW56CB5oqA5pyv5o6
i5b6uLeaWsOaXtuacn+eUteWtkOmAmuiur+eahOmihOe8lueggeaK
gOacr+aOouW+rmQCDQ9kFgJmDxUEAA1zemhoMjAxMzE3MTg4JeWfu
uS6jlNPUEPnmoTmtrLmmbbmmL7npLrns7vnu5/orr7orqEl5Z+65L
qOU09QQ+eahOa2suaZtuaYvuekuuezu+e7n+iuvuiuoWQCDg9kFgJ
mDxUEAA1zemhoMjAxMzE3MTg5J+WNs+aMh+WNs+ivkee/u+ivkeWZ
qOeahOiuvuiuoeS4juWunueOsCfljbPmjIfljbPor5Hnv7vor5Hlm
ajnmoTorr7orqHkuI7lrp7njrBkAgkPZBYEZg8VAQznu4/mtY7nrq
HnkIZkAgEPFgIfAQIKFhRmD2QWAmYPFQQADXN6aGgyMDEzMTcxOTA
n5LyB5Lia5bm26LSt56iO5pS256255YiS55qE6aOO6Zmp5YiG5p6Q
J+S8geS4muW5tui0reeojuaUtuetueWIkueahOmjjumZqeWIhuaek
GQCAQ9kFgJmDxUEAA1zemhoMjAxMzE3MTkxIea1heiwiOeOsOS7o+
S8geS4mueahOWuieWFqOeuoeeQhiHmtYXosIjnjrDku6PkvIHkuJr
nmoTlronlhajnrqHnkIZkAgIPZBYCZg8VBAANc3poaDIwMTMxNzE5
Mhjlhazlj7jnmoTku7flgLzpk77liIbmnpAY5YWs5Y+455qE5Lu35
YC86ZO+5YiG5p6QZAIDD2QWAmYPFQQADXN6aGgyMDEzMTcxOTMw5a
Sn5a2m55Sf572R57uc5Yib5Lia55qE546w54q244CB5Y6f5Zug5Y+
K5a+5562WMOWkp+WtpueUn+e9kee7nOWIm+S4mueahOeOsOeKtuOA
geWOn+WboOWPiuWvueetlmQCBA9kFgJmDxUEAA1zemhoMjAxMzE3M
Tk0NuaOoueptuWvueaIkeWbveS8geS4muS8muiuoeaUv+etlumAie
aLqeeahOeQhuaAp+aAneiAgzbmjqLnqbblr7nmiJHlm73kvIHkuJr
kvJrorqHmlL/nrZbpgInmi6nnmoTnkIbmgKfmgJ3ogINkAgUPZBYC
Zg8VBAANc3poaDIwMTMxNzE5NTDmtYXmnpDln47kuaHop4TliJLlu
7rorr7kuK3nmoTotKLliqHnrqHnkIbpl67popgw5rWF5p6Q5Z+O5L
mh6KeE5YiS5bu66K6+5Lit55qE6LSi5Yqh566h55CG6Zeu6aKYZAI
GD2QWAmYPFQQADXN6aGgyMDEzMTcxOTYz5oiR5Zu95LiK5biC5YWs
5Y+455uI5L2Z566h55CG5pa55rOV5LiO5a6h6K6h562W55WlM+aIk
eWbveS4iuW4guWFrOWPuOebiOS9meeuoeeQhuaWueazleS4juWuoe
iuoeetlueVpWQCBw9kFgJmDxUEAA1zemhoMjAxMzE3MTk3NuS9jue
is+e7j+a1juinhuinkuS4i+eahOWMuuWfn+e7j+a1juWPkeWxlei3
r+W+hOeglOeptjbkvY7norPnu4/mtY7op4bop5LkuIvnmoTljLrln
5/nu4/mtY7lj5HlsZXot6/lvoTnoJTnqbZkAggPZBYCZg8VBAANc3
poaDIwMTMxNzE5OBjorrrkvIHkuJrmoLjlv4Pnq57kuonlipsY6K6
65LyB5Lia5qC45b+D56ue5LqJ5YqbZAIJD2QWAmYPFQQADXN6aGgy
MDEzMTcxOTkz5Yqg5by66YCa5L+h6KGM5Lia5qyg6LS5566h55CG7
7yM5o6n5Yi25Z2P6LSm6aOO6ZmpM+WKoOW8uumAmuS/oeihjOS4mu
asoOi0ueeuoeeQhu+8jOaOp+WItuWdj+i0pumjjumZqWQCCg9kFgR
mDxUBDOe7vOWQiOiuuuWdm2QCAQ8WAh8BAiQWSGYPZBYCZg8VBAAN
c3poaDIwMTMxNzIwMCHmgJ3mg7PlrqPkvKDlkozkvIHkuJrmloflj
JbovqjmnpAh5oCd5oOz5a6j5Lyg5ZKM5LyB5Lia5paH5YyW6L6o5p
6QZAIBD2QWAmYPFQQADXN6aGgyMDEzMTcyMDEV5pGG6ISx5Y2V5Li
A55qE5o+t56eYFeaRhuiEseWNleS4gOeahOaPreenmGQCAg9kFgJm
DxUEAA1zemhoMjAxMzE3MjAyJOeOsOS7o+aVsOWtl+iInuWPsOWxl
eekuuW5s+WPsOeglOeptiTnjrDku6PmlbDlrZfoiJ7lj7DlsZXnpL
rlubPlj7DnoJTnqbZkAgMPZBYCZg8VBAANc3poaDIwMTMxNzIwMy3
or5XorrrlpoLkvZXlgZrlpb3kvIHkuJrmgJ3mg7PmlL/msrvlt6Xk
vZzogIUt6K+V6K665aaC5L2V5YGa5aW95LyB5Lia5oCd5oOz5pS/5
rK75bel5L2c6ICFZAIED2QWAmYPFQQADXN6aGgyMDEzMTcyMDRGMj
AxMeW5tOa+s+e9keWls+WNleWGs+i1m+adjuWonOS4juWFi+mHjOa
Wr+eJueWwlOaWr+aKgOacr+avlOi+g+eglOeptkYyMDEx5bm05r6z
572R5aWz5Y2V5Yaz6LWb5p2O5aic5LiO5YWL6YeM5pav54m55bCU5
pav5oqA5pyv5q+U6L6D56CU56m2ZAIFD2QWAmYPFQQADXN6aGgyMD
EzMTcyMDU75YWz5LqO5o+Q5Y2H5YuY5rWL6K6+6K6h5LyB5LiaSVT
ov5Dnu7TnrqHnkIbotKjph4/nmoTmjqLnqbY75YWz5LqO5o+Q5Y2H
5YuY5rWL6K6+6K6h5LyB5LiaSVTov5Dnu7TnrqHnkIbotKjph4/nm
oTmjqLnqbZkAgYPZBYCZg8VBAANc3poaDIwMTMxNzIwNjblr7nmj5
Dpq5jlhpvpmJ/mlL/msrvmnLrlhbPlubLpg6jntKDotKjnmoTlh6D
ngrnmgJ3ogIM25a+55o+Q6auY5Yab6Zif5pS/5rK75py65YWz5bmy
6YOo57Sg6LSo55qE5Yeg54K55oCd6ICDZAIHD2QWAmYPFQQADXN6a
GgyMDEzMTcyMDc25YWz5LqO5pWw5a2X55S16KeG57O757uf55qE5p
Ww5a2X5Lia5Yqh5bmz5Y+w55qE56CU56m2NuWFs+S6juaVsOWtl+e
Uteinhuezu+e7n+eahOaVsOWtl+S4muWKoeW5s+WPsOeahOeglOep
tmQCCA9kFgJmDxUEAA1zemhoMjAxMzE3MjA4UeWFs+S6juWMu+Wtp
umZouagoeW8gOWxleWkp+WtpueUn+WIm+aWsOWIm+S4muiuree7g+
iuoeWIkumhueebrueahOWunui3teS4juaAneiAg1HlhbPkuo7ljLv
lrabpmaLmoKHlvIDlsZXlpKflrabnlJ/liJvmlrDliJvkuJrorq3n
u4PorqHliJLpobnnm67nmoTlrp7ot7XkuI7mgJ3ogINkAgkPZBYCZ
g8VBAANc3poaDIwMTMxNzIwOVHlnZrmjIHnlKjnpL7kvJrkuLvkuY
nmoLjlv4Pku7flgLzkvZPns7vogrLkurrliqrlipvmiqzpq5jpq5j
moKHmlofljJblu7rorr7msLTlubNR5Z2a5oyB55So56S+5Lya5Li7
5LmJ5qC45b+D5Lu35YC85L2T57O76IKy5Lq65Yqq5Yqb5oqs6auY6
auY5qCh5paH5YyW5bu66K6+5rC05bmzZAIKD2QWAmYPFQQADXN6aG
gyMDEzMTcyMTBR5Yqg5by65Yy75a2m6Zmi5qCh5a6e5pa95aSn5a2
m55Sf5Yib5paw5Yib5Lia6K6t57uD6K6h5YiS566h55CG55qE5a+5
562W5ZKM5bu66K6uUeWKoOW8uuWMu+WtpumZouagoeWunuaWveWkp
+WtpueUn+WIm+aWsOWIm+S4muiuree7g+iuoeWIkueuoeeQhueahO
WvueetluWSjOW7uuiurmQCCw9kFgJmDxUEAA1zemhoMjAxMzE3MjE
xMOa1heaekOeUteW9seOAiuWFrOawkeWHr+aBqeOAi+eahOWIm+aW
sOS4jueqgeegtDDmtYXmnpDnlLXlvbHjgIrlhazmsJHlh6/mganjg
IvnmoTliJvmlrDkuI7nqoHnoLRkAgwPZBYCZg8VBAANc3poaDIwMT
MxNzIxMjnorrrlronlhajkuLvku7vliLblnKjljJblt6XkvIHkuJr
lronlhajnrqHnkIbkuK3nmoTlupTnlKg56K665a6J5YWo5Li75Lu7
5Yi25Zyo5YyW5bel5LyB5Lia5a6J5YWo566h55CG5Lit55qE5bqU5
5SoZAIND2QWAmYPFQQADXN6aGgyMDEzMTcyMTM55b2T5LuK5oiR5Z
u95pS/5bqc6YeH6LSt55qE546w54q244CB6Zeu6aKY5Y+K5a+5562
W56CU56m2OeW9k+S7iuaIkeWbveaUv+W6nOmHh+i0reeahOeOsOeK
tuOAgemXrumimOWPiuWvueetlueglOeptmQCDg9kFgJmDxUEAA1ze
mhoMjAxMzE3MjE0M+aVsOWtl+WMluaKgOacr+WPkeWxleWvueS8oO
WqkuS6p+S4mueahOW9seWTjeWIhuaekDPmlbDlrZfljJbmioDmnK/
lj5HlsZXlr7nkvKDlqpLkuqfkuJrnmoTlvbHlk43liIbmnpBkAg8P
ZBYCZg8VBAANc3poaDIwMTMxNzIxNRXkuLrkurrpgKDniannmoToi
brmnK8V5Li65Lq66YCg54mp55qE6Im65pyvZAIQD2QWAmYPFQQADX
N6aGgyMDEzMTcyMTYe5LyB5Lia572R56uZ55qE5byA5Y+R5LiO5bq
U55SoHuS8geS4mue9keermeeahOW8gOWPkeS4juW6lOeUqGQCEQ9k
FgJmDxUEAA1zemhoMjAxMzE3MjE3JOa1heaekOe+juWGm+WQjuWLp
OaMh+aMpeWPkeWxleWKqOaAgSTmtYXmnpDnvo7lhpvlkI7li6TmjI
fmjKXlj5HlsZXliqjmgIFkAhIPZBYCZg8VBAANc3poaDIwMTMxNzI
xOCrlr7nlvZPliY3lhpzmnZHnjq/looPkv53miqTpl67popjnmoTn
oJTnqbYq5a+55b2T5YmN5Yac5p2R546v5aKD5L+d5oqk6Zeu6aKY5
5qE56CU56m2ZAITD2QWAmYPFQQADXN6aGgyMDEzMTcyMTkw6K+X5o
SP55qE5qCW5bGF77ya5LuO5bGx5rC06K+X55yL5ZSQ5a6L6K+X5Lm
L5YirMOivl+aEj+eahOagluWxhe+8muS7juWxseawtOivl+eci+WU
kOWui+ivl+S5i+WIq2QCFA9kFgJmDxUEAA1zemhoMjAxMzE3MjIwH
+a1geihjOivreKAnFjpl6jigJ3miJDlm6DliIbmnpAf5rWB6KGM6K
+t4oCcWOmXqOKAneaIkOWboOWIhuaekGQCFQ9kFgJmDxUEAA1zemh
oMjAxMzE3MjIxNuWkluadpeiqnuOBruWPl+WuueOBjOaXpeacrOek
vuS8muOBq+OCguOBn+OCieOBmeW9semfvzblpJbmnaXoqp7jga7lj
5flrrnjgYzml6XmnKznpL7kvJrjgavjgoLjgZ/jgonjgZnlvbHpn7
9kAhYPZBYCZg8VBAANc3poaDIwMTMxNzIyMiflhbPkuo7ln47luIL
lgaXlurflj5HlsZXnmoTlk7LlrabmgJ3ogIMn5YWz5LqO5Z+O5biC
5YGl5bq35Y+R5bGV55qE5ZOy5a2m5oCd6ICDZAIXD2QWAmYPFQQAD
XN6aGgyMDEzMTcyMjMh6K665Lit5Zu95Zu95a625a6h6K6h5Y+R5b
GV6LaL5Yq/IeiuuuS4reWbveWbveWutuWuoeiuoeWPkeWxlei2i+W
Kv2QCGA9kFgJmDxUEAA1zemhoMjAxMzE3MjI0Kua3seW6puaKpemB
k+S4uue6uOWqkuWinuWKoOaguOW/g+ernuS6ieWKmyrmt7Hluqbmi
qXpgZPkuLrnurjlqpLlop7liqDmoLjlv4Pnq57kuonliptkAhkPZB
YCZg8VBAANc3poaDIwMTMxNzIyNVzlpK/lrp7ln7rnoYAg56ev5p6
B5o6i57SiIOazqOmHjeWunuaViOaehOW7uuW3peeoi+W7uuiuvumi
huWfn+W7ieaUv+mjjumZqemYsuaOp+mVv+aViOacuuWItlzlpK/lr
p7ln7rnoYAg56ev5p6B5o6i57SiIOazqOmHjeWunuaViOaehOW7uu
W3peeoi+W7uuiuvumihuWfn+W7ieaUv+mjjumZqemYsuaOp+mVv+a
ViOacuuWItmQCGg9kFgJmDxUEAA1zemhoMjAxMzE3MjI2M+OAiuiv
tOaWh+ino+Wtl+OAi+mHiuS5ieWFg+ivreiogOeglOeptuaKgOacr
+i3r+e6vzPjgIror7Tmlofop6PlrZfjgIvph4rkuYnlhYPor63oqI
DnoJTnqbbmioDmnK/ot6/nur9kAhsPZBYCZg8VBAANc3poaDIwMTM
xNzIyNznmj5DljYfnhaTnn7/kvIHkuJrlrqPkvKDmiqXpgZPlt6Xk
vZzmlYjog73nmoTot6/lvoTmjqLmnpA55o+Q5Y2H54Wk55+/5LyB5
Lia5a6j5Lyg5oql6YGT5bel5L2c5pWI6IO955qE6Lev5b6E5o6i5p
6QZAIcD2QWAmYPFQQADXN6aGgyMDEzMTcyMjgt5paw5Z6L55S15Yq
b5a6i5oi35pyN5Yqh5L+d6Zqc5L2T57O755qE5bu66K6+LeaWsOWe
i+eUteWKm+WuouaIt+acjeWKoeS/nemanOS9k+ezu+eahOW7uuiuv
mQCHQ9kFgJmDxUEAA1zemhoMjAxMzE3MjI5Hua1heiwiOi+o+akku
mrmOS6p+agveWfueaKgOacrx7mtYXosIjovqPmpJLpq5jkuqfmoL3
ln7nmioDmnK9kAh4PZBYCZg8VBAANc3poaDIwMTMxNzIzMDznuqrm
o4Dlt6XkvZzlnKjln7rlsYLlhZrliqHlt6XkvZznrqHnkIbkuK3nm
oTkuKXogoPmgKfliIbmnpA857qq5qOA5bel5L2c5Zyo5Z+65bGC5Y
Wa5Yqh5bel5L2c566h55CG5Lit55qE5Lil6IKD5oCn5YiG5p6QZAI
fD2QWAmYPFQQADXN6aGgyMDEzMTcyMzEh6K665Lit5Zu95Lyg57uf
5Zut5p6X6KaB57Sg54m554K5IeiuuuS4reWbveS8oOe7n+Wbreael
+imgee0oOeJueeCuWQCIA9kFgJmDxUEAA1zemhoMjAxMzE3MjMyMe
WKoOW8uumBk+W+t+W7uuiuviDlhajpnaLmj5Dpq5jlhazmsJHpgZP
lvrfntKDotKgx5Yqg5by66YGT5b635bu66K6+IOWFqOmdouaPkOmr
mOWFrOawkemBk+W+t+e0oOi0qGQCIQ9kFgJmDxUEAA1zemhoMjAxM
zE3MjMzMOa1heiuruWmguS9leW8uuWMlumBk+i3r+i/kOi+k+W4gu
WcuuS+neazleeuoeeQhjDmtYXorq7lpoLkvZXlvLrljJbpgZPot6/
ov5DovpPluILlnLrkvp3ms5XnrqHnkIZkAiIPZBYCZg8VBAANc3po
aDIwMTMxNzIzNCflm73lhoXlvq7nlLXlvbHlkoznlLXlvbHmioDmn
K/nmoTnjrDnirYn5Zu95YaF5b6u55S15b2x5ZKM55S15b2x5oqA5p
yv55qE546w54q2ZAIjD2QWAmYPFQQADXN6aGgyMDEzMTcyMzU856u
e5oqA5YGl576O5pON6L+Q5Yqo5ZGY6Lid5YWz6IqC5o2f5Lyk5Y6f
5Zug5Y+K6aKE6Ziy5o6q5pa9POernuaKgOWBpee+juaTjei/kOWKq
OWRmOi4neWFs+iKguaNn+S8pOWOn+WboOWPiumihOmYsuaOquaWvW
Rk+w2ZJyE+B4PPGRwyQTp9dM13tR4=" /> monitor
文档资料:凸多边形顶点排序问题的一种分治算法 完整下载 完整阅读 全文下载
全文阅读 免费阅读及下载
感谢你的阅读和下载
*资源、信息来源于网络。本文若侵犯了您的权益,请留言或者发站内信息。我将
尽快删除。*
2024年8月22日发(作者:壤驷华)
凸多边形顶点排序问题的一种分治算法
【摘 要】对凸多边形顶点排序问题做深入分析,提
出一种基于矢量方向比较的凸多边形顶点排序分治算法。首
先深入分析凸多边形顶点排序问题的背景;其次提出基于矢
量方向比较的凸多边形顶点排序分治算法;最后通过C++编程
实现该算法,并分析该算法的时间复杂度和空间复杂度。该
算法已经应用在实际项目中,证明该算法是简单高效的。
【关键词】凸多边形 顶点排序 凸包问题 分治算法
一、问题描述
(一)凸包问题和凸多边形定义
凸包问题[1]是计算机图形学中一个很重要的基础问
题,在GIS、CAD等领域有广泛的应用。对凸包问题的求解有
不少高效算法,例如卷包裹算法[2],分治算法[3]等。简单
多边形[4]的凸包问题是其中一个特例,而凸多边形顶点排序
问题又是简单多边形凸包问题的一个特例,目前对其研究不
多。下面给出凸多边形的严格定义。
[定义1]在一个简单多边形中,如果所有顶点都是凸顶
点[5],则称该多边形是一个凸多边形。
(二)凸多边形顶点排序问题
作者在开发有限元系统时遇到这样的问题,一个空间
六面体网格单元被一个平面切割, 12条边可能与切割面相交
于n(3<=n<=6)个点,n点连接后必然形成一个凸多边形。
六面体与平面相交后只有n个交点的坐标信息,顶点
的连接顺序就是我们要解决的凸多边形顶点排序问题。
二、算法分析
首先可以简化问题:当切平面与某坐标平面不垂直
时,可以将n个交点投影到该坐标平面(例如xoy平面)
上,这样将三维问题简化为二维问题。
在二维坐标平面上的n个点排序就是一个典型的凸包
问题,我们提出一种全新的快速分治算法。基础思想就是找
一个凸多边形的内部点,然后将该点与所有n个顶点连接形
成n个矢量,最后根据矢量与坐标轴夹角将n个点排序。假
设P为凸多边形内部任意点,PQ为x轴正方向,A到F是凸
多边形的6个顶点。显然按照PA、PB等矢量方向与PQ的逆
时针夹角从小到大的顺序,可以将所有6个顶点逆时针排
序,反之亦可。
该算法具体实现时,有以下几个问题需要解决。
(一)如何选择投影坐标面。
任取三个顶点所在平面与某坐标面不垂直时,我们可
以投影到该坐标面。一个平面不可能同时与三个坐标面垂
直,所以总能找到一个坐标面来投影。计算可以利用叉积求
法向量的方式,但是该方式计算量大,我们可以逆用如下定
理。
[定理1]:任取三点的xy坐标比值相同,则该平面必
然垂直于xoy平面。
简单证明如下:当(Xa/Ya) = (Xb/Yb) =
(Xc/Yc)时,a、b、c三点在xoy平面上的投影共线,则
a、b、c三点所在平面垂直于xoy面。同理可得到xoz和yoz
平面的类似结论。
(二)如何选择凸多边形内部点。
任取三顶点,求其几何中心P,则P点必然在凸多边形
内。如公式(2.1)所示。
Xp=(Xa+Xb+Xc)/3
Yp=(Ya+Yb+Yc)/3
Xp=(Ya+Yb+Yc)/3 (2.1)
(三)如何对各顶点排序。
夹角的cos值在[0,π]之间随角度增大而减小,
[π,2π]之间随角度增大而增大。因此,我们在对所有点排
序前,需要将全部点分为两个子集。以在xoy平面的投影为
例,按照y坐标是否大于P点可以将全部点分为“上部点”
(例如{ABC})和“下部点”(例如{DEF})两个子集。对
“上部点”我们按照cos值降序排列,对“下部点”按照cos
值升序排列,这样就得到全部点的排列。而这种将问题分
解,减小问题规模分而治之的思想正是典型的“分治”算
法。cos值可以按照公式(2.2)求得。
cos(QPA)=(Xa-Xp)/(Ya-Yp) (2.2)
三、算法实现和复杂度分析
在c++中函数的声明形式为:int sortpolynode(int
n, double *nodes)。其中函数返回值为排序的顶点数,返
回值为-1时表示函数出错。参数n为多边形的顶点数,nodes
是一个长度为3n的数组,存储n个顶点排序前的xyz坐标;
排序后的顶点坐标仍然放在该数组中,实现数据的输出。
算法定义的辅助变量主要包括几个double类型的
vector,包括upnodes、downnodes、upcoss、downcoss。前
两个分别存储上部点和下部点的坐标,后两个存对应顶点与
内部点P形成的矢量与横坐标正方向夹角的余弦值。前两个
vector长度相加为3n,后两个相加等于n,另外还需要一些
零散辅助空间,所以算法的空间复杂度为O(n)。
算法运行时,需要四个重要的循环。第一个循环次数
为n,将n个顶点按照是否高于内部点p的纵坐标划分到“上
部点”upnodes和“下部点”downnodes中。第二个循环次数
为n,用于求所有顶点的cos值。第三个循环利用选择法或起
泡法对upnodes、downnodes、upcoss和downcoss排序,循
环次数为:(n-1)!=n(n-1)/2。第四个循环用于将
upnodes和downnodes数据复制回nodes中作为函数输出,循
环次数为n。所以整个算法的时间复杂度为O(n^2)。
四、结语
通过上述分析可知,该算法时空效率都很高。该算法
已经应用在实际项目中,实践证明该算法是准确高效的。
参考文献:
[1] (美)莱维丁.算法设计与分析基础[M].北京:清
华大学出版社,2007:53-105.
[2] 宋丽,姜旭东.卷包裹法求凸包问题算法分析与程
序实现[J].牡丹江师范学院学报(自然科学版), 2005,
04期:18-19.
[3] 刘新,刘任任.一种改进的构建凸包的分治算法
[J].计算机工程与科学,2006,vol.28, NO.8:63-65.
[4] 刘润涛.简单多边形凸包的算法[J].哈尔滨理工大
学学报,2002,vol.7,NO.2:98-100.
[5] 吴尚智.一种求简单多边形凸包的算法[J].甘肃科
学学报,2000,vol.12,NO.4:11-13.
1Ppm4bmiJDnlLXot6/kvY7lip/ogJforr7orqHmioDmnK9kAgEPZB
YCZg8VBAANc3poaDIwMTMxNzE3NirosIjosIjnu4TlkIjpgLvovpH
nlLXot6/nmoTliIbmnpDlkozorr7orqEq6LCI6LCI57uE5ZCI6YC7
6L6R55S16Lev55qE5YiG5p6Q5ZKM6K6+6K6hZAICD2QWAmYPFQQAD
XN6aGgyMDEzMTcxNzcv5Z+65LqO55So5oi35L2T6aqM55qE55WM6Z
2i6K6+6K6h77yIVUnvvInnoJTnqbYv5Z+65LqO55So5oi35L2T6aq
M55qE55WM6Z2i6K6+6K6h77yIVUnvvInnoJTnqbZkAgMPZBYCZg8V
BAANc3poaDIwMTMxNzE3ODHln7rkuo5SRklE5oqA5pyv55qE56e75
Yqo55S15a2Q5ZWG5Yqh5bqU55So6K6+6K6hMeWfuuS6jlJGSUTmio
DmnK/nmoTnp7vliqjnlLXlrZDllYbliqHlupTnlKjorr7orqFkAgQ
PZBYCZg8VBAANc3poaDIwMTMxNzE3OTDlhbPkuo7nlLXlrZDkv6Hm
ga/mioDmnK/moIflh4bljJbnmoTlj5HlsZXliIbmnpAw5YWz5LqO5
5S15a2Q5L+h5oGv5oqA5pyv5qCH5YeG5YyW55qE5Y+R5bGV5YiG5p
6QZAIFD2QWAmYPFQQADXN6aGgyMDEzMTcxODBC5Z+O5biC5aSp54S
25rCU5bi455So6K6h6YeP5Luq6KGo5bel5L2c5Y6f55CG5Y+K6YCJ
5Z6L5bqU55So5rWF5p6QQuWfjuW4guWkqeeEtuawlOW4uOeUqOiuo
emHj+S7quihqOW3peS9nOWOn+eQhuWPiumAieWei+W6lOeUqOa1he
aekGQCBg9kFgJmDxUEAA1zemhoMjAxMzE3MTgxP0NMMjAwNeezu+W
Il0xFROeUteWtkOmAmuiur+Wxj+aOp+WItuezu+e7n+eahOWuieij
heS9v+eUqOeglOeptj9DTDIwMDXns7vliJdMRUTnlLXlrZDpgJror
q/lsY/mjqfliLbns7vnu5/nmoTlronoo4Xkvb/nlKjnoJTnqbZkAg
cPZBYCZg8VBAANc3poaDIwMTMxNzE4MhjnlLXlrZDnur/ot6/lrp7
pqozliIbmnpAY55S15a2Q57q/6Lev5a6e6aqM5YiG5p6QZAIID2QW
AmYPFQQADXN6aGgyMDEzMTcxODM35Z+65LqOVlhNTOaKgOacr+eah
OWkmua4oOmBk+mAmuiur+W5s+WPsOeahOeglOeptuWunui3tTfln7
rkuo5WWE1M5oqA5pyv55qE5aSa5rig6YGT6YCa6K6v5bmz5Y+w55q
E56CU56m25a6e6Le1ZAIJD2QWAmYPFQQADXN6aGgyMDEzMTcxODQw
55S15a2Q6YCa6K6v6K6+5aSH55qE5Y+v6Z2g5oCn6K6+6K6h5oqA5
pyv6K666L+wMOeUteWtkOmAmuiur+iuvuWkh+eahOWPr+mdoOaAp+
iuvuiuoeaKgOacr+iuuui/sGQCCg9kFgJmDxUEAA1zemhoMjAxMzE
3MTg1ReeUteWtkOW8j+eUteiDveihqOWcqOajgOWumui/h+eoi+S4
reW6lOazqOaEj+eahOmXrumimOWPiuino+WGs+WKnuazlUXnlLXlr
ZDlvI/nlLXog73ooajlnKjmo4Dlrprov4fnqIvkuK3lupTms6jmhI
/nmoTpl67popjlj4rop6PlhrPlip7ms5VkAgsPZBYCZg8VBAANc3p
oaDIwMTMxNzE4NifnlLXlrZDpgJrorq/kuqfkuJrnmoTlj5HlsZXn
irblhrXliIbmnpAn55S15a2Q6YCa6K6v5Lqn5Lia55qE5Y+R5bGV5
4q25Ya15YiG5p6QZAIMD2QWAmYPFQQADXN6aGgyMDEzMTcxODct5p
aw5pe25pyf55S15a2Q6YCa6K6v55qE6aKE57yW56CB5oqA5pyv5o6
i5b6uLeaWsOaXtuacn+eUteWtkOmAmuiur+eahOmihOe8lueggeaK
gOacr+aOouW+rmQCDQ9kFgJmDxUEAA1zemhoMjAxMzE3MTg4JeWfu
uS6jlNPUEPnmoTmtrLmmbbmmL7npLrns7vnu5/orr7orqEl5Z+65L
qOU09QQ+eahOa2suaZtuaYvuekuuezu+e7n+iuvuiuoWQCDg9kFgJ
mDxUEAA1zemhoMjAxMzE3MTg5J+WNs+aMh+WNs+ivkee/u+ivkeWZ
qOeahOiuvuiuoeS4juWunueOsCfljbPmjIfljbPor5Hnv7vor5Hlm
ajnmoTorr7orqHkuI7lrp7njrBkAgkPZBYEZg8VAQznu4/mtY7nrq
HnkIZkAgEPFgIfAQIKFhRmD2QWAmYPFQQADXN6aGgyMDEzMTcxOTA
n5LyB5Lia5bm26LSt56iO5pS256255YiS55qE6aOO6Zmp5YiG5p6Q
J+S8geS4muW5tui0reeojuaUtuetueWIkueahOmjjumZqeWIhuaek
GQCAQ9kFgJmDxUEAA1zemhoMjAxMzE3MTkxIea1heiwiOeOsOS7o+
S8geS4mueahOWuieWFqOeuoeeQhiHmtYXosIjnjrDku6PkvIHkuJr
nmoTlronlhajnrqHnkIZkAgIPZBYCZg8VBAANc3poaDIwMTMxNzE5
Mhjlhazlj7jnmoTku7flgLzpk77liIbmnpAY5YWs5Y+455qE5Lu35
YC86ZO+5YiG5p6QZAIDD2QWAmYPFQQADXN6aGgyMDEzMTcxOTMw5a
Sn5a2m55Sf572R57uc5Yib5Lia55qE546w54q244CB5Y6f5Zug5Y+
K5a+5562WMOWkp+WtpueUn+e9kee7nOWIm+S4mueahOeOsOeKtuOA
geWOn+WboOWPiuWvueetlmQCBA9kFgJmDxUEAA1zemhoMjAxMzE3M
Tk0NuaOoueptuWvueaIkeWbveS8geS4muS8muiuoeaUv+etlumAie
aLqeeahOeQhuaAp+aAneiAgzbmjqLnqbblr7nmiJHlm73kvIHkuJr
kvJrorqHmlL/nrZbpgInmi6nnmoTnkIbmgKfmgJ3ogINkAgUPZBYC
Zg8VBAANc3poaDIwMTMxNzE5NTDmtYXmnpDln47kuaHop4TliJLlu
7rorr7kuK3nmoTotKLliqHnrqHnkIbpl67popgw5rWF5p6Q5Z+O5L
mh6KeE5YiS5bu66K6+5Lit55qE6LSi5Yqh566h55CG6Zeu6aKYZAI
GD2QWAmYPFQQADXN6aGgyMDEzMTcxOTYz5oiR5Zu95LiK5biC5YWs
5Y+455uI5L2Z566h55CG5pa55rOV5LiO5a6h6K6h562W55WlM+aIk
eWbveS4iuW4guWFrOWPuOebiOS9meeuoeeQhuaWueazleS4juWuoe
iuoeetlueVpWQCBw9kFgJmDxUEAA1zemhoMjAxMzE3MTk3NuS9jue
is+e7j+a1juinhuinkuS4i+eahOWMuuWfn+e7j+a1juWPkeWxlei3
r+W+hOeglOeptjbkvY7norPnu4/mtY7op4bop5LkuIvnmoTljLrln
5/nu4/mtY7lj5HlsZXot6/lvoTnoJTnqbZkAggPZBYCZg8VBAANc3
poaDIwMTMxNzE5OBjorrrkvIHkuJrmoLjlv4Pnq57kuonlipsY6K6
65LyB5Lia5qC45b+D56ue5LqJ5YqbZAIJD2QWAmYPFQQADXN6aGgy
MDEzMTcxOTkz5Yqg5by66YCa5L+h6KGM5Lia5qyg6LS5566h55CG7
7yM5o6n5Yi25Z2P6LSm6aOO6ZmpM+WKoOW8uumAmuS/oeihjOS4mu
asoOi0ueeuoeeQhu+8jOaOp+WItuWdj+i0pumjjumZqWQCCg9kFgR
mDxUBDOe7vOWQiOiuuuWdm2QCAQ8WAh8BAiQWSGYPZBYCZg8VBAAN
c3poaDIwMTMxNzIwMCHmgJ3mg7PlrqPkvKDlkozkvIHkuJrmloflj
JbovqjmnpAh5oCd5oOz5a6j5Lyg5ZKM5LyB5Lia5paH5YyW6L6o5p
6QZAIBD2QWAmYPFQQADXN6aGgyMDEzMTcyMDEV5pGG6ISx5Y2V5Li
A55qE5o+t56eYFeaRhuiEseWNleS4gOeahOaPreenmGQCAg9kFgJm
DxUEAA1zemhoMjAxMzE3MjAyJOeOsOS7o+aVsOWtl+iInuWPsOWxl
eekuuW5s+WPsOeglOeptiTnjrDku6PmlbDlrZfoiJ7lj7DlsZXnpL
rlubPlj7DnoJTnqbZkAgMPZBYCZg8VBAANc3poaDIwMTMxNzIwMy3
or5XorrrlpoLkvZXlgZrlpb3kvIHkuJrmgJ3mg7PmlL/msrvlt6Xk
vZzogIUt6K+V6K665aaC5L2V5YGa5aW95LyB5Lia5oCd5oOz5pS/5
rK75bel5L2c6ICFZAIED2QWAmYPFQQADXN6aGgyMDEzMTcyMDRGMj
AxMeW5tOa+s+e9keWls+WNleWGs+i1m+adjuWonOS4juWFi+mHjOa
Wr+eJueWwlOaWr+aKgOacr+avlOi+g+eglOeptkYyMDEx5bm05r6z
572R5aWz5Y2V5Yaz6LWb5p2O5aic5LiO5YWL6YeM5pav54m55bCU5
pav5oqA5pyv5q+U6L6D56CU56m2ZAIFD2QWAmYPFQQADXN6aGgyMD
EzMTcyMDU75YWz5LqO5o+Q5Y2H5YuY5rWL6K6+6K6h5LyB5LiaSVT
ov5Dnu7TnrqHnkIbotKjph4/nmoTmjqLnqbY75YWz5LqO5o+Q5Y2H
5YuY5rWL6K6+6K6h5LyB5LiaSVTov5Dnu7TnrqHnkIbotKjph4/nm
oTmjqLnqbZkAgYPZBYCZg8VBAANc3poaDIwMTMxNzIwNjblr7nmj5
Dpq5jlhpvpmJ/mlL/msrvmnLrlhbPlubLpg6jntKDotKjnmoTlh6D
ngrnmgJ3ogIM25a+55o+Q6auY5Yab6Zif5pS/5rK75py65YWz5bmy
6YOo57Sg6LSo55qE5Yeg54K55oCd6ICDZAIHD2QWAmYPFQQADXN6a
GgyMDEzMTcyMDc25YWz5LqO5pWw5a2X55S16KeG57O757uf55qE5p
Ww5a2X5Lia5Yqh5bmz5Y+w55qE56CU56m2NuWFs+S6juaVsOWtl+e
Uteinhuezu+e7n+eahOaVsOWtl+S4muWKoeW5s+WPsOeahOeglOep
tmQCCA9kFgJmDxUEAA1zemhoMjAxMzE3MjA4UeWFs+S6juWMu+Wtp
umZouagoeW8gOWxleWkp+WtpueUn+WIm+aWsOWIm+S4muiuree7g+
iuoeWIkumhueebrueahOWunui3teS4juaAneiAg1HlhbPkuo7ljLv
lrabpmaLmoKHlvIDlsZXlpKflrabnlJ/liJvmlrDliJvkuJrorq3n
u4PorqHliJLpobnnm67nmoTlrp7ot7XkuI7mgJ3ogINkAgkPZBYCZ
g8VBAANc3poaDIwMTMxNzIwOVHlnZrmjIHnlKjnpL7kvJrkuLvkuY
nmoLjlv4Pku7flgLzkvZPns7vogrLkurrliqrlipvmiqzpq5jpq5j
moKHmlofljJblu7rorr7msLTlubNR5Z2a5oyB55So56S+5Lya5Li7
5LmJ5qC45b+D5Lu35YC85L2T57O76IKy5Lq65Yqq5Yqb5oqs6auY6
auY5qCh5paH5YyW5bu66K6+5rC05bmzZAIKD2QWAmYPFQQADXN6aG
gyMDEzMTcyMTBR5Yqg5by65Yy75a2m6Zmi5qCh5a6e5pa95aSn5a2
m55Sf5Yib5paw5Yib5Lia6K6t57uD6K6h5YiS566h55CG55qE5a+5
562W5ZKM5bu66K6uUeWKoOW8uuWMu+WtpumZouagoeWunuaWveWkp
+WtpueUn+WIm+aWsOWIm+S4muiuree7g+iuoeWIkueuoeeQhueahO
WvueetluWSjOW7uuiurmQCCw9kFgJmDxUEAA1zemhoMjAxMzE3MjE
xMOa1heaekOeUteW9seOAiuWFrOawkeWHr+aBqeOAi+eahOWIm+aW
sOS4jueqgeegtDDmtYXmnpDnlLXlvbHjgIrlhazmsJHlh6/mganjg
IvnmoTliJvmlrDkuI7nqoHnoLRkAgwPZBYCZg8VBAANc3poaDIwMT
MxNzIxMjnorrrlronlhajkuLvku7vliLblnKjljJblt6XkvIHkuJr
lronlhajnrqHnkIbkuK3nmoTlupTnlKg56K665a6J5YWo5Li75Lu7
5Yi25Zyo5YyW5bel5LyB5Lia5a6J5YWo566h55CG5Lit55qE5bqU5
5SoZAIND2QWAmYPFQQADXN6aGgyMDEzMTcyMTM55b2T5LuK5oiR5Z
u95pS/5bqc6YeH6LSt55qE546w54q244CB6Zeu6aKY5Y+K5a+5562
W56CU56m2OeW9k+S7iuaIkeWbveaUv+W6nOmHh+i0reeahOeOsOeK
tuOAgemXrumimOWPiuWvueetlueglOeptmQCDg9kFgJmDxUEAA1ze
mhoMjAxMzE3MjE0M+aVsOWtl+WMluaKgOacr+WPkeWxleWvueS8oO
WqkuS6p+S4mueahOW9seWTjeWIhuaekDPmlbDlrZfljJbmioDmnK/
lj5HlsZXlr7nkvKDlqpLkuqfkuJrnmoTlvbHlk43liIbmnpBkAg8P
ZBYCZg8VBAANc3poaDIwMTMxNzIxNRXkuLrkurrpgKDniannmoToi
brmnK8V5Li65Lq66YCg54mp55qE6Im65pyvZAIQD2QWAmYPFQQADX
N6aGgyMDEzMTcyMTYe5LyB5Lia572R56uZ55qE5byA5Y+R5LiO5bq
U55SoHuS8geS4mue9keermeeahOW8gOWPkeS4juW6lOeUqGQCEQ9k
FgJmDxUEAA1zemhoMjAxMzE3MjE3JOa1heaekOe+juWGm+WQjuWLp
OaMh+aMpeWPkeWxleWKqOaAgSTmtYXmnpDnvo7lhpvlkI7li6TmjI
fmjKXlj5HlsZXliqjmgIFkAhIPZBYCZg8VBAANc3poaDIwMTMxNzI
xOCrlr7nlvZPliY3lhpzmnZHnjq/looPkv53miqTpl67popjnmoTn
oJTnqbYq5a+55b2T5YmN5Yac5p2R546v5aKD5L+d5oqk6Zeu6aKY5
5qE56CU56m2ZAITD2QWAmYPFQQADXN6aGgyMDEzMTcyMTkw6K+X5o
SP55qE5qCW5bGF77ya5LuO5bGx5rC06K+X55yL5ZSQ5a6L6K+X5Lm
L5YirMOivl+aEj+eahOagluWxhe+8muS7juWxseawtOivl+eci+WU
kOWui+ivl+S5i+WIq2QCFA9kFgJmDxUEAA1zemhoMjAxMzE3MjIwH
+a1geihjOivreKAnFjpl6jigJ3miJDlm6DliIbmnpAf5rWB6KGM6K
+t4oCcWOmXqOKAneaIkOWboOWIhuaekGQCFQ9kFgJmDxUEAA1zemh
oMjAxMzE3MjIxNuWkluadpeiqnuOBruWPl+WuueOBjOaXpeacrOek
vuS8muOBq+OCguOBn+OCieOBmeW9semfvzblpJbmnaXoqp7jga7lj
5flrrnjgYzml6XmnKznpL7kvJrjgavjgoLjgZ/jgonjgZnlvbHpn7
9kAhYPZBYCZg8VBAANc3poaDIwMTMxNzIyMiflhbPkuo7ln47luIL
lgaXlurflj5HlsZXnmoTlk7LlrabmgJ3ogIMn5YWz5LqO5Z+O5biC
5YGl5bq35Y+R5bGV55qE5ZOy5a2m5oCd6ICDZAIXD2QWAmYPFQQAD
XN6aGgyMDEzMTcyMjMh6K665Lit5Zu95Zu95a625a6h6K6h5Y+R5b
GV6LaL5Yq/IeiuuuS4reWbveWbveWutuWuoeiuoeWPkeWxlei2i+W
Kv2QCGA9kFgJmDxUEAA1zemhoMjAxMzE3MjI0Kua3seW6puaKpemB
k+S4uue6uOWqkuWinuWKoOaguOW/g+ernuS6ieWKmyrmt7Hluqbmi
qXpgZPkuLrnurjlqpLlop7liqDmoLjlv4Pnq57kuonliptkAhkPZB
YCZg8VBAANc3poaDIwMTMxNzIyNVzlpK/lrp7ln7rnoYAg56ev5p6
B5o6i57SiIOazqOmHjeWunuaViOaehOW7uuW3peeoi+W7uuiuvumi
huWfn+W7ieaUv+mjjumZqemYsuaOp+mVv+aViOacuuWItlzlpK/lr
p7ln7rnoYAg56ev5p6B5o6i57SiIOazqOmHjeWunuaViOaehOW7uu
W3peeoi+W7uuiuvumihuWfn+W7ieaUv+mjjumZqemYsuaOp+mVv+a
ViOacuuWItmQCGg9kFgJmDxUEAA1zemhoMjAxMzE3MjI2M+OAiuiv
tOaWh+ino+Wtl+OAi+mHiuS5ieWFg+ivreiogOeglOeptuaKgOacr
+i3r+e6vzPjgIror7Tmlofop6PlrZfjgIvph4rkuYnlhYPor63oqI
DnoJTnqbbmioDmnK/ot6/nur9kAhsPZBYCZg8VBAANc3poaDIwMTM
xNzIyNznmj5DljYfnhaTnn7/kvIHkuJrlrqPkvKDmiqXpgZPlt6Xk
vZzmlYjog73nmoTot6/lvoTmjqLmnpA55o+Q5Y2H54Wk55+/5LyB5
Lia5a6j5Lyg5oql6YGT5bel5L2c5pWI6IO955qE6Lev5b6E5o6i5p
6QZAIcD2QWAmYPFQQADXN6aGgyMDEzMTcyMjgt5paw5Z6L55S15Yq
b5a6i5oi35pyN5Yqh5L+d6Zqc5L2T57O755qE5bu66K6+LeaWsOWe
i+eUteWKm+WuouaIt+acjeWKoeS/nemanOS9k+ezu+eahOW7uuiuv
mQCHQ9kFgJmDxUEAA1zemhoMjAxMzE3MjI5Hua1heiwiOi+o+akku
mrmOS6p+agveWfueaKgOacrx7mtYXosIjovqPmpJLpq5jkuqfmoL3
ln7nmioDmnK9kAh4PZBYCZg8VBAANc3poaDIwMTMxNzIzMDznuqrm
o4Dlt6XkvZzlnKjln7rlsYLlhZrliqHlt6XkvZznrqHnkIbkuK3nm
oTkuKXogoPmgKfliIbmnpA857qq5qOA5bel5L2c5Zyo5Z+65bGC5Y
Wa5Yqh5bel5L2c566h55CG5Lit55qE5Lil6IKD5oCn5YiG5p6QZAI
fD2QWAmYPFQQADXN6aGgyMDEzMTcyMzEh6K665Lit5Zu95Lyg57uf
5Zut5p6X6KaB57Sg54m554K5IeiuuuS4reWbveS8oOe7n+Wbreael
+imgee0oOeJueeCuWQCIA9kFgJmDxUEAA1zemhoMjAxMzE3MjMyMe
WKoOW8uumBk+W+t+W7uuiuviDlhajpnaLmj5Dpq5jlhazmsJHpgZP
lvrfntKDotKgx5Yqg5by66YGT5b635bu66K6+IOWFqOmdouaPkOmr
mOWFrOawkemBk+W+t+e0oOi0qGQCIQ9kFgJmDxUEAA1zemhoMjAxM
zE3MjMzMOa1heiuruWmguS9leW8uuWMlumBk+i3r+i/kOi+k+W4gu
WcuuS+neazleeuoeeQhjDmtYXorq7lpoLkvZXlvLrljJbpgZPot6/
ov5DovpPluILlnLrkvp3ms5XnrqHnkIZkAiIPZBYCZg8VBAANc3po
aDIwMTMxNzIzNCflm73lhoXlvq7nlLXlvbHlkoznlLXlvbHmioDmn
K/nmoTnjrDnirYn5Zu95YaF5b6u55S15b2x5ZKM55S15b2x5oqA5p
yv55qE546w54q2ZAIjD2QWAmYPFQQADXN6aGgyMDEzMTcyMzU856u
e5oqA5YGl576O5pON6L+Q5Yqo5ZGY6Lid5YWz6IqC5o2f5Lyk5Y6f
5Zug5Y+K6aKE6Ziy5o6q5pa9POernuaKgOWBpee+juaTjei/kOWKq
OWRmOi4neWFs+iKguaNn+S8pOWOn+WboOWPiumihOmYsuaOquaWvW
Rk+w2ZJyE+B4PPGRwyQTp9dM13tR4=" /> monitor
文档资料:凸多边形顶点排序问题的一种分治算法 完整下载 完整阅读 全文下载
全文阅读 免费阅读及下载
感谢你的阅读和下载
*资源、信息来源于网络。本文若侵犯了您的权益,请留言或者发站内信息。我将
尽快删除。*