点在多边形内_一种寻找多边形视觉中心的新算法

遇到的问题

在一个多边形上放置文本标签或工具提示的最佳位置通常位于其“视觉中心”的某个位置,即多边形内部的一个点,周围有尽可能多的空间。

计算这样一个中心首先想到的是多边形质心。你可以用一个简单快速的公式计算多边形中心,但如果形状是凹的或有一个洞,点可以落在形状外面。 287952ab4e9b51387310a12141504ea5.png 我们如何定义我们需要的点?一个更可靠的定义是”不可到达的极点”或”最大内接圆”:多边形中离边缘最远的点。 不幸的是,计算不可访问性的极点既复杂又缓慢。公布的解决方案需要约束delaunay三角化(Constrained Delaunay Triangulation)或计算一个直线骨架作为预处理步骤——这两个步骤都是缓慢且容易出错的。 对于我们的用例,我们不需要一个精确解——我们愿意牺牲一些精度来获得更快的速度。当我们在地图上放置标签时,以毫秒为单位计算比精确计算更重要。我们为这个问题创建了一个新的启发式算法。

现有的解决方案

这项在线任务的唯一近似算法是由加西亚-卡斯特利亚诺斯和伦巴多在2007年的论文中描述的。算法是这样的:

  • 将点置于任意大小的网格上(本文中为24x24,或576个点),在其边界框内探测多边形,丢弃多边形外的所有点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值