【问题标题】:Determining Cross Over of Numbers确定数字的交叉
【发布时间】:2010-12-30 00:27:14
【问题描述】:

假设我有这个数据集...

var a = [5,6,7]; 变量 b = [9,8,6];

假设这些值是在 (x,y) 坐标对中绘制的 y,x 是数组索引,我怎么知道我的两个数组是否在一个点交叉。

谢谢。

【问题讨论】:

  • sylvester.js 是您可能感兴趣的向量和矩阵库。

标签: javascript math line-intersection


【解决方案1】:

试试这个:

if ((a[0] < b[0]) == (a[1] > b[1]) ||
    (a[1] < b[1]) == (a[2] > b[2]))
{
    // crossed
}

重要的一点是,对于某些索引 i,a[i] 的值(大于|小于)b[i],a[i + 1] 和 b[i + 1] 之间的关系是对面。

【讨论】:

  • 对于较大的数据集,此方法可能开始显得笨拙。我认为更直观地只是迭代数组并执行 a[i]-b[i]>0。如果他们不交叉,这应该对所有人都是正确的,或者对所有人都是错误的。如果这对某些人来说是正确的,而对其他人来说不是,那么他们会交叉。您可能还想检查是否相等,以防数组接触但不交叉(例如 3,2,3 和 1,2,1)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多