gpt4 book ai didi

c++ - 如何使用 C/c++ 库确定一个位置是否在另一个位置内?

转载 作者:行者123 更新时间:2023-11-30 17:31:31 26 4
gpt4 key购买 nike

我知道芝加哥的纬度和经度是:41.8819° N,87.6278° W。美国的纬度和经度是:38.8833° N,77.0167° W。如何根据纬度和经度确定芝加哥位于美国:是否有某种算法可以执行相同的操作?

也不应该用很多值而不是单个值来描述一个地方的纬度和经度——例如美国是一个大国,那么我们如何用两点来描述它:41.8819° N,87.6278° W??

有人可以帮忙解决这个问题吗?另外,我正在使用 C/C++ 进行编码,如果有一个库可以帮助我使用 C/C++ 进行相同的操作,那就太好了?

最佳答案

  1. 一个好主意是将球坐标转换为正交/正交笛卡尔坐标

    这将确保避免角度溢出错误。 Here是关于它的完整答案

  2. 将边界映射到多边形,然后测试点是否在多边形内部

    您可以从 vector map 中获取多边形。尝试找到一些美国或地球的 svg 图像并从中提取多边形或路径。要测试多边形内部,即使在 SE 上也有很多示例...因此请尝试搜索 polygon+inside 问题。

    这个东西非常简单,所以不需要库

  3. 将您的国家/地区简化为一组椭圆/圆圈/或其他任何内容,并测试您是否在内部

    粗略地说,这将为您提供附近边界点的错误答案,因为这种表示不够准确。内部椭圆很容易,您只需根据 ellipse equation 测试坐标即可

    enter image description here

    它是单个 if 语句:

    if (((x-x0)*(x-x0)/a)+((y-y0)*(y-y0)/b)<=1.0f) { /* is inside */ };
    • x,y 是您的测试点
    • x0,y0 为测试椭圆中心
    • a,b 是它的半轴

    如果您还想要旋转椭圆,那么您需要添加旋转并在测试之前将x,y旋转角度...

    //---------------------------------------------------------------------------
    void rotate2d(double alfa,double &x,double &y)
    {
    double a=x,b=y,c,s;
    c=cos(alfa);
    s=sin(alfa);
    x=a*c-b*s;
    y=a*s+b*c;
    }
    //---------------------------------------------------------------------------

关于c++ - 如何使用 C/c++ 库确定一个位置是否在另一个位置内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24583278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com