我有ArrayList
一些Point
-s。保证点是凸多边形的一部分。
如何计算这个凸多边形的周长?
更新: ArrayList 中的点没有任何顺序
更新 2:所有点都是凸多边形边缘的一部分
积分是否有序?如果是这样,您只需要总结从每个顶点到下一个顶点的距离
将每两个连续点之间的距离相加。
如果点没有排序,如果没有确定正确的顺序是不可能的。那是因为如果有超过 3 个点,它们可以形成不止一个多边形。
我不完全确定点形成凸多边形的约束是否足以从点云确定规范形状。
我的猜测是,通过从列表中获取一个随机点,然后寻找最近的剩余点,您可以建立一个规范顺序。从那里它只是总结了由连续点形成的线的长度。
编辑:再想一想,放弃这个想法。它不适用于所有情况。这使您可以置换点并检查形成的多边形是否确实是凸的。
关于如何检查多边形是否凸的问题已在此处提出并回答:如何确定多边形是否复杂/凸/非凸?