- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要帮助编写以下方法:
def get_new_location(current_location, target_location, distance_travelled):
...
...
return new_location
所有位置均为(纬度、经度)
我意识到地球有不同的模型(WGS-84、GRS-80,...),这些模型考虑到地球是椭球体这一事实。就我的目的而言,假设完美的球体就足够了,那么这种精度水平是不必要的。
更新
考虑到一些回复,我正在微调我的问题。
benjismith
认为我的问题无法得到解答,因为地球上的点之间存在不止一条最短路径。他以选票的形式得到了很多支持,所以我想有些事情我不明白,因为我不同意。
The midpoint between any two locations on a sphere is a circular arc.
我承认当两点完全相反时这是正确的。我的意思是,两个点虽然保留在球体表面上,但彼此之间的距离不能再远。在这种情况下,有无数条等距路径连接两个点。然而,这是一种边缘情况,而不是规则。在所有其他情况下,绝大多数情况下,只有一条最短路径。
举个例子:如果你握住一根穿过两个点的绳子,并将其拉紧,那么绳子稳定下来的可能路径是否只有一条(除了已经讨论过的边缘情况)?
现在,在提出问题之前,获取两点和航向之间的距离不是问题。
我想我应该问的是以下内容是否有效:
def get_new_location(current_location, target_location, percent_traveled):
new_location.lon = (1-percent_traveled)*current_location.lon+percent_traveled*target_location.lon
new_location.lat = (1-percent_traveled)*current_location.lat+percent_traveled*target_location.lat
return new_location
如果我要走这条路,我会遵循大圆、恒向线……还是会完全偏离?(由于德鲁·霍尔的回答,我现在知道了这些术语。)
最佳答案
正如 BenjiSmith 所说,可能有几条路径可以连接地球上的任何 A 和 B,但最受欢迎的两条路径(到目前为止!)是“大圆”和“恒向线”路径。
大圆给出最短距离(通过从两点和地球中心构建一个平面并沿着该平面内的圆弧)。
恒向线保持恒定的航向,牺牲一定的距离(在高纬度地区可能会很远)以方便使用。也就是说,在船上或飞机上,您只需指向所需的航向并一直行驶,直到到达目的地(而使用大圆圈时,航向会不断变化)。在中纬度地区,距离损失并不太严重。
请注意,两种路径类型在处理对映点(球体上彼此相对的点)时都存在涉及极点的不连续性和模糊性。
要构建一个大圆,您需要将这些点转换为 3D 笛卡尔坐标(我将省略这一步,但对于球形地球来说这是微不足道的,并且对于扁地球模型(a WGS-84)迭代地找到) .
Let a be the unit vector pointing at the start point from the center of the earth.
Let b be the unit vector pointing at the end point from the center of the earth.
Let r be the radius of the earth.
Let d be the (given) distance traveled.
构造垂直于 G.C. 的单位向量。通过计算单位向量a和b的叉积来计算平面。也就是说,令n = a x b。
(给定的)行进距离是矢量 *r***a** 绕 n 扫过某个角度 theta 所形成的弧长。回想一下完整大圆的周长是 2 * pi * r,我们发现 theta = d/r>.
通过围绕 n 旋转 *r***a** theta 弧度,可以找到与新位置相对应的笛卡尔点。将该笛卡尔点转换为纬度/经度,就完成了。
我不会在这里导出恒向线数学,但会说墨卡托 map 投影具有恒向线是直的属性。您可以使用墨卡托投影公式轻松构建恒向线,但您必须定义一些误差容限,以便可以将路径分成短的直线段。
祝你好运!
关于great-circle - 如果我在这里并朝着那里前进并且我已经覆盖了这么多地方,那么我在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/283045/
我正在构建一个带有 10 个按钮和一个容器的小型 CoffeeScript 应用程序(简单)。当用户按下其中一个按钮时:容器发生变化。 这些按钮看起来像导航栏,我没有使用链接(这将重新加载整个页面),
我正在使用 ajax 来模拟菜单。一切正常,但后退 和前进 按钮无法正常工作。 所以代码是: $('#sdt_menu a').on('click', function (e) { hre
我正在开发单页应用程序 (SPA)。因此,为了维护浏览器的前后功能,我使用 htmlPushState 和 window.onpop 传递参数来更改 css 并从后端调用 rest APIS。 所以目
我正在尝试找到一种方法,以避免当用户使用 2 指滚动(例如:OSX)时在浏览器中触发后退/前进。 就像这样: https://tweetdeck.twitter.com 最佳答案 移动设备在处理触摸事
如何让 SKNode 继续前进? 我已经能够使用 [SKAction moveByX:y:duration:] 使节点沿固定方向移动,但我希望它沿相对于其面向方向的方向移动. 我希望让每个节点旋转 4
如何使用 JQuery 或 Native JS 禁用现代浏览器在水平滚动时向后或向前移动的默认功能? 这通常发生在使用触控板和滚动到可滚动 div 的结尾或开头时。 最佳答案 history.push
我有一个对象列表,我想在 Spring Rest API 中返回这些对象,然后将其作为 Angular 中的对象数组读取: public Stream findListByReference_tran
谁能建议我如何在 emacs 中通过 n 逗号前进(或后退)? 我正在尝试浏览 CSV 文件 我知道我可以做类似的事情: C-u 100 M-f 但是能够在逗号上做更多的正则表达式会更准确 最佳答案
我无法使用 MediaController 来暂停/前进/后退 视频,而且它只发生在 LG 设备上。下面是正在使用的代码,它在所有设备的其余部分都有效: VideoView video=(Vi
如何从转换矩阵中获取前向、右向和向上 vector ? 我想以这些 vector 为基础,向不同方向的刚体施加力。 btTransform Trans = _RigidBody->getWorldTr
有没有办法在向另一个 Controller 添加一些参数数据的同时将请求转发给另一个 Controller ?我尝试添加到 ModelMap,但它似乎并没有出现。我正在做类似的事情: return "
在CentOS 中,双击文件夹,默认会在新窗口中打开文件夹,没有路径、前进、后退这样的按钮,如果一个文件夹的路径很深,则需要打开n多的窗口才能找到最终想要的。我们可以设置一下,呵呵…… 步骤如下:
后退箭头在 Xcode 中损坏? 是否有键盘命令可以一次后退/前进一个文件。 Xcode 3.2更改了 Cmd-Opt 的行为。正如另一个问题中所指出的,它们不像以前版本的 Xcode 那样在文件级
从文档 ( http://www.asual.com/jquery/address/docs/ ) 中可以看出,该插件有一个事件来检测何时按下浏览器的后退/前进按钮。 $.address.extern
我目前正在开发一个跟踪访问者鼠标行为的 jQuery 插件。移动、点击、滚动和调整大小都会被记录下来,并通过 Ajax 发送到解析和存储这些数据的位置。 最初,当用户离开页面时,数据被发送到脚本。我所
开始细节: Windows 7 专业版 64 位 WAMP 版本:2.5 MySQL版本:5.6.17 PHP 版本:5.5.12 Apache 版本:2.4.9 我还有 Git、Heroku Too
我正在学习JavaFX,试图编写一个简单的浏览器,但是如何使用WebView和WebEngine在JavaFX中编写“后退”和“前进”按钮?任何示例代码? 最佳答案 如果您不需要获取或设置任何索引,这
我想使用我拥有的两个附加(“虚拟”)鼠标按钮(RAZER DEATHADDER BLACK)在编辑器选项卡之间向后/向前移动。 在 Eclipse 中,默认情况下它是可能的。 在 IDEA 中,我转到
有没有办法只让我的 OWN 浏览器 (Chrome) 无法后退/前进/刷新? 这种情况经常发生,当我在 devtools 中开发和玩弄时(更改 HTML 和 CSS 只是为了尝试一下)我有时会不小心向
所以我正在尝试编写一个脚本来动态加载内容,这样页面就不必刷新(主要内容将被替换,但侧边栏、页眉、页脚等将保留在同一个地方)。我已经触发了我的事件,我正在使用 pushState() 来更新我的 URL
我是一名优秀的程序员,十分优秀!