python - 我想使用python从地图中绘制的半圆计算重叠区域
问题描述
我正在尝试计算由 folium 创建的半圆创建的重叠区域。之后我想通过减少相同的值重叠将 x、y、z 值分配给每个半圆:- 减少两个 x 值半圆
这里是图像为了更好地理解
如何使用python计算重叠区域?
解决方案
1.纯数学:
首先,检查它们是否相交:
由于重叠不均匀(正交、垂直或对称),您将需要使用称为 FUNCTIONS(如 f(x))的东西的帮助,并且由于您的扇区(它们不是半圆)看起来是大小相同并且有一个内部区域,您可以使用 INEQUALITIES 检查它们是否相交。
例如,假设您有两个像这样拦截的扇区,它们具有各自的功能:
f(x) = x^2 + y^2 <= 5 | {0 <= x <= 5} {0 <= y} (RED)
g(x) = ((x - 4)^2) + y^2 <= 5 | {0 <= x <= 5} {0 <= y} (BLUE)
假设一致的笛卡尔系统(x,y),所有扇区都绘制到相同的坐标(在相同的“空间”中;如果你在这里理解我......):
只需将这两个功能等同起来:
规则:如果 f(x) 与 g(x) 相交,反之亦然:
- f(x) = g(x) 在某个点
- g(x) 在/穿过 f(x) 的阴影区域
- f(x) 在/穿过 g(x) 的阴影区域
- f(x)的半径+g(x)的半径≥2个扇区之间的距离
注意:如果您的函数不是不等式而是线,则 2 和 3 可能需要微积分来检查。
由于您正在编写程序,因此您可以提前退出,如果不满足前4 个条件之一,则扇区不会相交。
其次,如果部门确实相交:
使用积分计算求相交面积:
∫f(x) - ∫g(x) = the magnitude (size) of the area (make sure the upper and lower limits are specified correctly)
2.使用3D图形方法:
现在,我知道这不是一个很好的方法,但如果你不喜欢繁重的数学,你可以实现碰撞检测。
显然,初读这可能听起来完全荒谬(因为碰撞检测是游戏编程中更经常使用的东西),但读到这里:
看看你是否可以在你的象限上实现一种扇区命中框(创建圆形命中框,将它们限制在扇区中,看看它们是否相交。)
不过,老实说,第一种方法是最理想的,假设您有某种形式的 3D 或 2D 笛卡尔系统,您的象限被映射到该系统上。
虽然数学有点繁重,但你想如何在 python 中实现它取决于你(我强烈建议创建多个函数并尽可能优化(如上面检查交集的 4 条规则))。
如果您不知道任何数学概念,请在谷歌上搜索以了解更多信息,因为了解它们的工作原理会对您有很大帮助...
推荐阅读
- list - 如何根据特定要求创建用户名列表?(Android Studio - Azure)
- regex - stuby 没有返回对我的请求的响应,其中包含 % 的查询参数
- wso2 - 在登录应用程序期间面临问题并收到与 WSO2 相关的错误
- javascript - 如何告诉 JSDoc 某个函数是函数定义类的方法?
- visual-studio - 无法导入数据库 - “Guid 应包含 32 位数字和 4 个破折号”错误
- git - 如何镜像两个 Azure DevOps/VSTS 存储库之间的特定分支
- elasticsearch - ElasticSearch - 使用函数得分查询字段值因子与匹配查询
- c# - 检查模拟设置是否返回字符串类型
- bash - 运行日志日期格式更改不起作用
- sonarqube - 人群组不同步到声纳