墨卡托地图投影逻辑冲突

我正在寻找解释为什么在这些网站上讨论了2种不同的mercator公式.

我理解这是正确的墨卡托投影算法:

http://en.wikipedia.org/wiki/Mercator_projection

y = ln|sec(lat) + tan(lat)|

但是,这个网站指的是完全不同的东西:
http://wiki.openstreetmap.org/wiki/Mercator

#include <math.h>
double lat2y(double a) { return 180/M_PI * log(tan(M_PI/4+a*(M_PI/180)/2)); }

有任何想法吗?

解决方法

两个公式都是平等的.

>

sec(x) + tan(x) = [ 1 + sin(x) ] / cos(x)

>

tan(pi/4 + x/2) = sin(pi/4 + x/2) / cos(pi/4 + x/2) =

= [cos(x/2) + sin(x/2)] / [cos(x/2) – sin(x/2)] =

= [cos(x/2) + sin(x/2)]^2 / [cos(x/2) – sin(x/2)] / [cos(x/2) + sin(x/2)] =

= [1 + 2*cos(x/2)*sin(x/2)] / [cos^2(x/2) – sin^2(x/2)] =

= [1 + sin(x)] / cos(x)

一个公式对于数值计算更方便,因为它只涉及一次三角函数的计算.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...