如何装逼地被经纬度坑
啊……那个 从新手到菜鸟的Linux教程 系列暂时先放在一边……等开学再写……
所以今天要吐槽的是什么呢?最近(半年)在写一个跑步的app,有一回突发奇想,怎么才能尽量准确地统计用户跑了几圈呢?
要回答这个问题,首先要明白什么是“跑了几圈”,也就是“圈”的定义是什么。
有人会说:“那还不简单,我绕着中心转了多少就能算出跑了几圈嘛。”
中心取的位置,对于圈数计算会有不同的结果。这一点学过复变函数的同学们应该很容易明白的。
不过我们暂且按下这一点不作讨论;姑且认为中心取在所有测量点的重心位置。在这种假设下,依然还有很多种办法。比较自然的想法是:用atan2
函数算出两点与中心连线转过的角度。
但是!!!
这样的程序员和咸鱼有什么区别呢!!!
所以我灵机一动:
对应离散的情况就是
然后我就试了一下以前跑过的数据,似乎没有什么问题。
不过,为什么逆时针跑出来的圈数
是负的啊!
上学期才刚学过复变函数的我(眉头一皱,感觉事情没有这么简单),看来是轮子造得有问题。
然而,当我检验了一下1/z的积分时候,发现轮子好像造得没有问题。
???
想了很久,终于查了一下latitude和longitude的意思,然后发现
TM在这个坐标下xy轴关系和正常复平面中的关系是正好相反的!所以顺时针走积分值就是正的了。
郁闷至死。