使用GPS坐标创建边界球体

时间:2016-12-21 21:36:58

标签: c++ math 3d

我想在对象周围创建一个虚构的边界球体。以GPS坐标WGS84格式给出物体的位置。并且还给出了笛卡尔坐标的位置。

我试图将度lon,lat,alt转换为弧度,并使用Spketre的函数将它们转换为笛卡尔坐标。

问题是我正在进行球体到球体碰撞的检测以及我发现从球形转换为笛卡尔的位置非常接近,因此球体交点方法返回true。

WGS84toXYZ(xAv, yAv, zAv, (m_sPosAV.GetLongitude()*math::pi) / 180, (m_sPosAV.GetLatitude()*math::pi) / 180, (m_sPosAV.GetAltitude()*math::pi) / 180); // lon direction Nort
WGS84toXYZ(xPoi, yPoi, zPoi, (poi.Position().GetLongitude()*math::pi) / 180, (poi.Position().GetLatitude()*math::pi) / 180, (poi.Position().GetAltitude()*math::pi) / 180); // lon direction Nort

    Sphere avSphere;
    Sphere poiSphere;

    avSphere.position.x = xAv;
    avSphere.position.y = yAv;
    avSphere.position.z = zAv;
    avSphere.radius = 1550; 
    poiSphere.position.x = xPoi;
    poiSphere.position.y = yPoi;
    poiSphere.position.z = zPoi;
    poiSphere.radius = 1200; 

    if (doesItCollide(avSphere, poiSphere))
    {
        qDebug() << "collision";
    }

0 个答案:

没有答案