链接

球面距离计算公式:d(x1,y1,x2,y2)=r*arccos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2))
x1,y1是纬度\经度的弧度单位,r为地球半径
 
把有用的信息从恶心的字符串中提取出来,然后套公式,再处理下恶心的精度,得出的距离需要四舍五入。
 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 100000
#define LL long long
#define INF 0xfffffff
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
const double r = /2.0;
char s[];
int dcmp(double x)
{
if(fabs(x)<eps) return ;
return x<?-:;
}
void solve(double x1,double y1,double x2,double y2)
{
double ans = r*acos(sin(x1)*sin(x2)+
cos(x1)*cos(x2)*cos(y1-y2)); printf("The distance to the iceberg: %.2lf miles.\n",ans);
if(dcmp(ans-+0.005)<)
puts("DANGER!");
}
int main()
{
double d1,d2,d3,d4;
int a,b,c,i;
char dir[];
for(i = ; i < ; i++)
scanf("%s",s);
scanf("%s",s);
sscanf(s,"%d^%d'%d''",&a,&b,&c);
//printf("%d %d %d\n",a,b,c);
d1 = a+b/60.0+c/3600.0;
scanf("%s",dir);
if(dir[]=='S')
d1=-d1;
scanf("%s",s); scanf("%s",s);
sscanf(s,"%d^%d'%d''",&a,&b,&c);
//printf("%d %d %d\n",a,b,c);
d2 = a+b/60.0+c/3600.0;
scanf("%s",dir);
if(dir[]=='W')
d2=-d2; for(i = ; i < ; i++) scanf("%s",s);
scanf("%s",s);
sscanf(s,"%d^%d'%d''",&a,&b,&c);
//printf("%d %d %d\n",a,b,c);
d3 = a+b/60.0+c/3600.0;
scanf("%s",dir);
if(dir[]=='S')
d3=-d3; scanf("%s",s); scanf("%s",s);
sscanf(s,"%d^%d'%d''",&a,&b,&c);
//printf("%d %d %d\n",a,b,c);
d4 = a+b/60.0+c/3600.0;
scanf("%s",dir);
if(dir[]=='W')
d4=-d4;
scanf("%s",s); solve(d1*pi/,d2*pi/,d3*pi/,d4*pi/);
return ;
}

poj2354Titanic(两点的球面距离)的更多相关文章

  1. UVA 11817 Tunnelling the Earth --球面距离公式

    题意: 给出两点的经纬度,求两点的球面距离与直线距离之差. 解法: 我们先算出球面距离,然后可以根据球面距离算出直线距离. 球面距离公式: R*acos(sin(W1)*sin(W2)+cos(W1) ...

  2. uva 11817 - Tunnelling the Earth

    题意:从地球上的一个点到另一个点,求两点的球面距离和直线距离之差.假定地球是正球体,半径为6371009米. #include<iostream> #include<cmath> ...

  3. ACM计算几何模板——圆和球

    #include <iostream> #include <cmath> using namespace std; #define eps 1e-10 /********** ...

  4. 【百度地图API】如何根据摩卡托坐标进行POI查询,和计算两点距离

    原文:[百度地图API]如何根据摩卡托坐标进行POI查询,和计算两点距离 摘要: 百度地图API有两种坐标系,一种是百度经纬度,一种是摩卡托坐标系.在本章你将学会: 1.如何相互转换这两种坐标: 2. ...

  5. php 计算两点地理坐标的距离

    <?php /** * 计算两点地理坐标之间的距离 * @param Decimal $longitude1 起点经度 * @param Decimal $latitude1 起点纬度 * @p ...

  6. 用 Excel 测试“绘制两点间连线”的算法

    最近在研究和制作数字示波器,其中涉及一个小算法:需要将 ADC 采样的数值在 TFT LCD 屏幕上面显示并且用“线”连接起来. ADC 按照时序对输入电压采样后,记录的是一个个的数值,如果显示的时候 ...

  7. sql server2008根据经纬度计算两点之间的距离

    --通过经纬度计算两点之间的距离 create FUNCTION [dbo].[fnGetDistanceNew] --LatBegin 开始经度 --LngBegin 开始维度 --29.49029 ...

  8. HDU 2376 树形dp|树上任意两点距离和的平均值

    原题:http://acm.hdu.edu.cn/showproblem.php?pid=2376 经典问题,求的是树上任意两点和的平均值. 这里我们不能枚举点,这样n^2的复杂度.我们可以枚举每一条 ...

  9. CodeForces 459A Pashmak and Garden(水~几何-给两点求两点组成正方形)

    题目链接:http://codeforces.com/problemset/problem/459/A 题目大意: 给出两个点(在坐标轴中),求另外两个点从而构成一个正方形,该正方形与坐标轴平行. 如 ...

随机推荐

  1. 如何为github上的项目添加gif效果图

    一.制作gif图片 如何制作可以参考: http://www.jianshu.com/p/27ec6375b8ab?utm_campaign=maleskine&utm_content=not ...

  2. HDU 3487:Play with Chain(Splay)

    http://acm.hdu.edu.cn/showproblem.php?pid=3487 题意:有两种操作:1.Flip l r ,把 l 到 r 这段区间 reverse.2.Cut a b c ...

  3. C#:控制台程序调用中间库创建窗体

    1.类库项目引用System.Windows.Forms并添加引用后,才可创建窗体. 2.控制台应用程序调用中间库(DLL)中的方法创建窗体:中间类库使用反射下的Assembly加载包含窗体的类库及创 ...

  4. js闭包的产生

    当函数可以记住并访问所在的词法作用域, 即函数是在当前词法作用域之外执行, 这时就产生了闭包. function a () { function b () {   //函数b的词法作用域是在函数a内 ...

  5. SlickGrid example 3a: 可编辑单元

    可编辑单元支持一列展示多个属性域,可以为编辑单元提供验证,并且自定义验证事件.   代码: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 T ...

  6. c# 回调委托

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. Java中的ClassLoader

      Java中类的加载过程(如Dog类):   通过类型信息定位Dog.class文件. 载入Dog.class文件,创建相应的Class对象. 执行父类的静态字段定义时初始化语句和父类的静态初始化块 ...

  8. Codeforces Round #337 Vika and Segments

    D. Vika and Segments time limit per test:  2 seconds     memory limit per test:  256 megabytes input ...

  9. 软件测试工作中涉及的Linux命令整理

    Linux文件系统命令 1. 安装火狐浏览器,首先得知道Linux系统是64位的还是32位的 uname -a 2. 将下载的火狐浏览器压缩包移动到指定目录(/user/local)下 sudo mv ...

  10. js的解析--预处理(三)

    js的解析与执行过程  分全局  {预处理阶段和执行阶段}  函数{预处理函数和执行阶段}   1/创建词法环境(环境上下文) LexicalEnvironment   === window { } ...