设为首页 加入收藏

TOP

UVA 11817 (球面几何)
2015-11-21 01:05:12 来源: 作者: 【 】 浏览:3
Tags:UVA 11817 球面 几何

这题主要知道如何把经纬度转化为三维点坐标即可

代码:

?

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       using namespace std; const double PI = acos(-1.0); int t; double lat[2], lng[2]; //角度转化为弧度 double torad(double deg) { return deg / 180 * PI; } struct Point3 { double x, y, z; Point3() {} Point3(double x, double y, double z) { this->x = x; this->y = y; this->z = z; } }; const double R = 6371009; Point3 get_coord(double R, double lat, double lng) { lat = torad(lat); lng = torad(lng); return Point3(R * cos(lat) * cos(lng), R * cos(lat) * sin(lng), R * sin(lat)); } double dist(Point3 p, Point3 q) { double dx = p.x - q.x; double dy = p.y - q.y; double dz = p.z - q.z; return sqrt(dx * dx + dy * dy + dz * dz); } int main() { scanf("%d", &t); while (t--) { scanf("%lf%lf%lf%lf", &lat[0], &lng[0], &lat[1], &lng[1]); Point3 p[2]; p[0] = get_coord(R, lat[0], lng[0]); p[1] = get_coord(R, lat[1], lng[1]); double d = dist(p[0], p[1]); printf("%.0f\n", 2 * asin(d / 2 / R) * R - d); } return 0; } 
     
    
   
  


?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 1501 Zipper (DFS) 下一篇HLJOJ1214(最短路)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: