- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
尽管我已经阅读了几篇文章,但直到现在我才能真正解决这个问题-希望有人可以在这里提供帮助。
事实(知道变量):
最佳答案
如果距离很小,并且您按照建议将纬度/经度坐标转换为平面上的 x,y 坐标,例如使用this question的答案,那么解决这个问题所需的数学就很简单了。
下图显示了追逐者和目标在时间 0 的位置(红点和蓝点)、它们的速度(圆圈表示它们在时间 1、2、3...之后的范围)和目标的轨迹(蓝光)。
绿色曲线包含目标和追逐者在以当前速度继续移动时可能同时出现的所有位置。这条曲线与目标轨迹的交点就是拦截点(粉红色的点)。
如果拦截发生在时间 t 之后,那么追逐者和目标经过的距离是 t.vc 和 t.vt。我们还知道0时刻追逐者与目标的距离d,以及追逐者与目标的连线段与目标轨迹的夹角α。如果我们将这些输入到 cosine rule我们得到:
(t . vc)2 = (t . vt)2 + d2 - 2 . d . t . vt . cos(α)
(vc2 - vt2) . t2 + (2 . d . vt . cos(α)) . t - d2 = 0
t = (- b ± √(b2 - 4 . a . c)) / (2 . a)
where:
a = vc2 - vt2
b = 2 . d . vt . cos(α)
c = - d2
function intercept(chaser, target) {
var dist = distance(chaser, target);
var dir = direction(chaser, target);
var alpha = Math.PI + dir - target.dir;
// EQUAL VELOCITY CASE: SOLVE BY ISOSCELES TRIANGLE THEOREM
if (chaser.vel == target.vel) {
if (Math.cos(alpha) < 0) return NaN; // INTERCEPTION IMPOSSIBLE
return (dir + alpha) % (Math.PI * 2);
}
// GENERAL CASE: SOLVE BY COSINE RULE AND QUADRATIC EQUATION
var a = Math.pow(chaser.vel, 2) - Math.pow(target.vel, 2);
var b = 2 * dist * target.vel * Math.cos(alpha);
var c = -Math.pow(dist, 2);
var disc = Math.pow(b, 2) - 4 * a * c;
if (disc < 0) return NaN; // INTERCEPTION IMPOSSIBLE
var time = (Math.sqrt(disc) - b) / (2 * a);
var x = target.x + target.vel * time * Math.cos(target.dir);
var y = target.y + target.vel * time * Math.sin(target.dir);
return direction(chaser, {x: x, y: y});
function distance(p, q) {
return Math.sqrt(Math.pow(p.x - q.x, 2) + Math.pow(p.y - q.y, 2));
}
function direction(p, q) {
return Math.atan2(q.y - p.y, q.x - p.x);
}
}
var chaser = {x: 196, y: -45, vel: 100};
var target = {x: 139, y: -312, vel: 75, dir: 0.1815142422};
document.write(intercept(chaser, target) + "<br>"); // -1.015 rad = -58.17°
var chaser = {x: 369, y: -235, vel: 37.5};
var target = {x: 139, y: -376, vel: 75, dir: 0.1815142422};
document.write(intercept(chaser, target) + "<br>"); // -1.787 rad = -102.4°
关于algorithm - 两个具有纬度/经度坐标的运动物体的交点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37250215/
我创建了一个函数来计算两条线段的交点。 不幸的是,如果其中一个段是垂直的,下面的代码将不起作用 public static Point intersection(Segment s1, Seg
我有一个由中心 (x,y,z)、半径和方向矢量定义的圆,该矢量指定圆的朝向。我需要测试这样的圆是否与轴对齐的边界框相交。为了澄清,通过相交,我的意思是如果圆圈描述的区域内的任何点在边界框内,那么就构成
虽然我认为这是一个基本问题,但我似乎无法找到如何在 R 中计算: 2 个或多个正态分布(拟合在直方图上)的交点(我需要 x 值),例如具有以下参数: d=data.frame(mod=c(1,2),m
我看过几个关于找到两个 OBB 之间的交点的线程。我仍然不明白如何找到最小穿透轴。我需要找到最小穿透轴,我相信它在 David Eberly 的论文中也被称为最后一个分离轴,以确定我应该使用表格的哪一
我想使用 intersection()通过 key 或filter()在 Spark 。 但是我真的不知道怎么用intersection()按键。 所以我尝试使用filter() ,但它不起作用。 示
我正在画一个circle在canvas上。我想知道,给定 circle 的半径和原点 x/y ,在什么时候 circle与 canvas 相交(如果有的话)边缘。 这肯定是一个几何问题,但这部分似乎太
我正在尝试计算任意数量平面的最顶部交点,但没有任何乐趣!我正在使用 actionscript,但只需要找到一个我可以实现的算法。 问题: 考虑 3 个垂直轴。 用户为每个三角形/平面输入 3 个点,使
我是一名优秀的程序员,十分优秀!