首页 > 解决方案 > 如何从 Boost Envelope 获得最小边界矩形的所有四个角?

问题描述

我正在使用 boost返回包络函数来找到围绕一组 2d 点的最小边界矩形。它返回一个有两个成员函数的盒子max_corner()min_corner()

我想知道我的一组点的最小边界矩形(MBR)的所有四个角,所以我有点困惑。两个角真的足以定义一个矩形吗?当然,给定空间中的两个点,可以容纳无限多个矩形吗?

如何获得 MBR 的所有四个顶点?

标签: c++boostgeometry

解决方案


return_envelope()创建所谓的轴对齐边界框 (AABB)。

这意味着假设矩形的边缘与 X 和 Y 轴对齐,这极大地限制了一对点可以表示的矩形集合。

给定矩形的左下角和右上角,也就是保存 x 和 y 的最小值和最大值的角,其他两个角可以很容易地确定:

(min_corner[0], min_corner[1])
(min_corner[0], max_corner[1])
(max_corner[0], min_corner[1])
(max_corner[0], max_corner[1])

推荐阅读