我正在尝试创建一个点列表,旨在尽可能接近地描述给定图像的边界多边形。多边形将用于计算两个图形之间的碰撞。所以它们必须同时准确和小(就每个多边形的点而言)。
我的基本图像(例如 PNG)总是单色图片,中间有一个形状不同的黑色“点”。我试图通过使用autotrace
将我的图像转换为 svg 的 cli 工具来实现这一点。我目前正在解析 svg 中的路径以获取边界多边形的坐标。
该解决方案有效,但效率很低。下面显示的自动跟踪命令生成的点是准确的。
autotrace -output-format svg --corner-threshold=360 --remove-adjacent-corners --despeckle-level=20 -output-file sample.svg sample.gif
对于附加到这篇文章的示例形状,这会产生约 800 个点,其中 - 理论上 - 4 就足够了(每个“角落”一个)。
由于我不在运行时插值曲线,因此生成的 svg 必须仅包含线条。
如何获得足够准确但占用空间小的适当边界多边形?