c++ - 搜索具有最小矩形长度和的一组点。算法是什么?

标签 c++ algorithm computational-geometry

美好的一天。

我的任务是在 2D 空间中找到到矩形的距离总和最小的一组点。例如,对于两个矩形,结果将是下一个区域 ( picture )。该区域中的任何点都具有 A 和 B 矩形的最小长度之和。 哪种算法适合寻找一个区域,其中所有点的长度和都最小?矩形的数量可以不同,它们是随机放置的。它们甚至可以相互重叠。矩形的边与坐标轴平行,不能旋转。 区域必须是矩形或线或点。

最佳答案

提示:

矩形的距离图(将任意点 (x,y) 映射到距矩形最近距离的函数)由四个斜面(斜率 45°)、四个四分之一的圆锥体和矩形本身组成,在地面上,形成一个连续的表面。

要获得全局距离图,“足以”对各个矩形的距离图求和。将产生一个相当复杂的表面。根据几何形状,最小值可能在单个顶点、整个边或整个面上实现。

全局 map 的构建似乎比line arrangement 更难,由于圆锥补丁。在一般情况下这是一个非常困难的问题,尽管轴对齐约束可能会缓解它。

关于c++ - 搜索具有最小矩形长度和的一组点。算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54467571/

相关文章:

algorithm - 编写算术表达式解析器所需的技术

optimization - 多面体放置优化

matlab - 使用n点进行姿势估计的稳定性

c++ - 如何确保给定的一组点位于可能正方形的边界上?

c++ - 对象没有命名类型 - C++

c++ - 错误的 std::vector 构造函数

perl - 捕获稀疏矩阵的非零元素、计数和索引

c++ - 使用 cpprestsdk 将字符串转换为 web::json

c++ - 严格的别名规则和放置新

c - 使用递归算法反转链表