- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
下面是 2 个矩形。给定矩形顶点的坐标 - (x1, y1)...(x8, y8),如何计算重叠区域(下图中白色)的面积?
请注意:
最佳答案
既然你说矩形可能没有对齐,可能的答案可能是什么,一个点,一条线段,或者一个 3-8 边的多边形。
执行此2d boolean
操作的常用方法是选择边缘的逆时针顺序,然后评估临界点(交叉点或拐角)之间的边缘段。在每个交叉点,您在第一个矩形的边缘段和第二个矩形的边缘之间切换,反之亦然。您总是选择前一个片段左侧的片段。
有很多细节,但基本算法是找到所有交点,并使用适当的数据结构在边缘对它们进行排序。选择一个交点(如果有的话)并选择一条远离该交点的线段。找到所选起始段左侧的另一个矩形的段。在图中,我们选择交叉点a上的绿色线段(箭头方向)作为引用线段。右边的另一个矩形的线段是从 a 到 b 的线段。将其用作下一个引用段,并选择其左侧的绿色段。那是从 b 到 c 的部分。以相同的方式查找段 cd。下一段是从 d 到角点,所以角点也在交点的顶点列表中。从 Jade 米地我们回到a。
要每次选择左侧,请使用相交边的方向 vector 坐标的确定值。如果有序有向边对的行列式是正的,那么你就走对了。
现在您已经有了交集多边形的顶点,您可以使用 surveyor's formula获取该区域。
我要留给你的一些细节是:
如果一个角与另一个三角形的边或顶点重合怎么办?
如果没有路口怎么办? (一个矩形在另一个矩形之内,或者它们不相交——您可以使用多边形中的点检查来解决这个问题。参见 Wikipedia article on polygons。
如果交点是单点或线段怎么办?
关于c++ - 长方形-长方形相交面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011267/
我正在开发一个企业名录网站,其搜索将由 Google map 驱动。用户将能够根据各种标准搜索他们所在地区的企业,但主要的想法是,如果您搜索例如“新泽西州的水管工”,您将获得新泽西州所有水管工的结果。
我得到了一条任意形状的曲线,包围了一些区域。 我想估计曲线在 iPhone/iPad 屏幕上包围的像素数。我该怎么做? 曲线被定义为点的连续 x/y 坐标。 闭合曲线。 通过用户的触摸(touches
我想删除 R 在点阵图周围的默认边距。这意味着我想摆脱红色矩形之外的所有空白。这是示例: library (raster) library(rasterVis) f <- system.file("e
无法找到任何直接的解决方案来计算 GMSPolygon 对象面积。有什么方法可以做到这一点,或者我必须用边长和一些数学计算来计算它? 最佳答案 感谢@Larme; GMSGeometryArea 就是
假设例如我想将标准正态分布的密度曲线下方的面积着色为十分。我希望最左边 10% 的区域具有与接下来的 10% 不同的阴影,依此类推。 这是问题“Shading a kernel density plo
我正在为 Extjs 开发一个混合图表组件,并且曲线太尖锐了。我找不到曲线具有半径的配置。如果你处理过类似的事情,你能提供一些方法让我的曲线变得平滑一点吗?这是我的代码: Ext.define('Ex
上下文 我有一个 3D 对象,我有它的坐标。然后我将对象旋转 n 次,当对象投影到网格上时,我想计算对象的 2D 面积(以纳米为单位)。 例如, 我在下面有一张图片描述了我的问题。我有相同的对象,但在
当我知道我需要的地 block 总数并且我希望排列是一个正方形(可能有一些空的子地 block )时,我正在尝试弄清楚如何计算子地 block 尺寸。 例如,如果我需要 22 个子图,那么我会为总共
我是一名数据科学家。主要使用Python和SQL来编写代码。我使用data studio进行可视化。所以我对JS不熟悉。我的诀窍data studio community visualizations
我有 1797 张 Mnist 图像,为此我需要提取两个特征(FilledArea、EulerNumber)。我知道如何在 Matlab 中做到这一点。我的特征矩阵在 Matlab 中具有(并且是正确
我希望能够在 Google map 上绘制形状(圆形、多边形和矩形),但我想限制可以绘制的形状的大小(面积)。因此,以圆圈为例,期望的行为是当用户开始从 map 上的某个点拖动鼠标以形成圆圈时,圆圈会
我是一名优秀的程序员,十分优秀!