平面點集的凸包問題


平面點集的凸包可理解為包含所有點的最小凸多邊形(點可以在多邊形邊上或在其內)。這里給出一種求解方法。

一、基本思路

先找所有點中 y 坐標最大最小的點Pmax、Pmin,所找點必定是凸包上的點;

image

找距離直線PmaxPmin兩側最遠的點P1,P0,構成初始三角形clip_image002[7]clip_image004

image

再對每個三角形新生成的邊(clip_image002[9]clip_image004[5]clip_image006clip_image008)繼續找與改變對應頂點(clip_image010)不在同一側的最遠點。

image

二、算法流程

1 找所有點中 y 坐標最大和最小的點

     1.1 若找到的點少於兩個,return,輸出(無凸包結構)

     1.2 若y坐標最大最小點各只有一個記為Pmax,Pmin,找直線PmaxPmin兩側最遠的點P1,P0,將構成的三角形clip_image002[11]clip_image004[7]放入堆棧TriStack

     1.3 若找到的點大於兩個,把這些點能組成的三角形放入堆棧TriStack

2 若TriStack不為空

     2.1 三角形出棧,找三角形前兩個頂點的對邊與該點異側的最遠點

     2.2 若點存在,邊與點組成三角形放入TriStack

     2.3 若點不存在,該邊存入Boundary,返回2

3 返回 Boundary

 參考:https://www.cnblogs.com/nobodyzhou/p/5243929.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM