math - 确定一个对象是否在 2D 空间中其他两个对象的路径中
问题描述
假设有 3 个对象由 xy 坐标中的矩形定义。矩形可以是任何方向(不一定平行于轴)。
您将如何处理从对象 A 的角度确定对象 C 是否部分、完全或完全不被对象 B 遮挡的问题(对象 A 可以从其矩形的任何位置看到)?
第二个问题:是否可以确定物体 C 可见的百分比?
解决方案
这是我的(完全未经测试的)方法。
首先考虑同样的问题,但只从一个固定点 P 看。
找到穿过 P 的两条(无限)线并包围你的矩形 B。由于它是一个矩形,这两条线将是穿过 P 和 B 的每个顶点的四条线中的两条。
检查 C 的每个顶点是否在这两行之间。如果 C 的任何顶点位于这两条线之间,请检查它是否比 B 更接近或更远离 P。如果它比 B 更远,则至少部分遮挡 C。
现在对 A 的每个顶点执行此操作。如果您从 A 中的一个点 P 看到 C 的一部分,从 A 中的不同点 P 看到 C 的不同部分,您可能会得到更复杂的结果。我将由您决定如何处理那个。
要确定覆盖率百分比,请计算从矩形 C 与这两条线相交得到的形状并计算其面积,然后除以形状的总面积。
我已经把所有的数学问题都留给你来解决,但是如果你对你的工作有任何具体的问题,请随时提出这些问题。
添加一些图片会很好地受益于这个答案,但我希望您在根据提供的步骤绘制自己的图表时能够理解这个答案。
推荐阅读
- mysql - 可以将另一个表作为表中的一行引用吗?
- c++ - 重载小于 (<) 运算符,用于以多种方式对对象进行排序
- git - 恢复单个 Gitlab 存储库
- angular - 是否可以在 Angular 7 中使用 observable 进行更新?
- here-api - 有没有人有任何在拥挤区域扩大分组别针的例子?
- algorithm - 如何在 O(n * log(k)) 中将排序列表合并为单个列表
- javascript - “拒绝承诺未在 1 秒内处理” vscode API
- python - Python Glob 在中间搜索特定文件名
- c++ - 在 ubuntu 上使用不同版本的 gcc 编译会产生不同的结果
- javascript - 使用 Mustache js 更新模板