【发布时间】:2019-05-26 10:20:48
【问题描述】:
我获得了经度和纬度的地理坐标,例如西北和东南经度/纬度。所以,当我得到它们时,我会翻译成公制。所以在这里我得到了我的第一个矩形,带有north_west和south_east坐标,然后我在具有北、南、西和东坐标的同一公制系统中有边界矩形。我需要检查这两个矩形在边缘触摸的交叉点上,我写的是:
bool filter(TilePosition const& tile_position) const noexcept override
{
MetricBoundingBox tile_bounds{tile_position};
bool cond1 = (tile_bounds.north <= south_east_.lon);
bool cond2 = (tile_bounds.south >= north_west_.lon);
bool cond3 = (tile_bounds.west <= south_east_.lat);
bool cond4 = (tile_bounds.east >= north_west_.lat);
return cond1 && cond2 && cond3 && cond4;
}
我不确定我做得对不对?我的要求是,如果第二个矩形的边界与第一个矩形的边界相交,则必须留下第二个。否则,过滤。
【问题讨论】:
-
也相关(与语言无关):Two Rectangles intersection
-
@scohe001 我看到了这个问题,但我需要检查我的解决方案是否正确?真的很难为我测试它。
-
您检查第一个矩形是否在边界内,这可能正确与否取决于要求。如果两个矩形部分重叠,您的条件将返回 false
-
另外,编写一些测试以确保您的代码正确是一个好习惯。除了通过分析证明算法的正确性之外,这是确定这一点的最简单方法。相对于这个问题,你可以只检查几个边缘情况和简单的重叠。
标签: c++ geometry cartography