2010-12-30 5 views
0

Допустим, у меня есть этот набор данных ...Определение перечеркнутых чисел

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

Предположим, что эти значения были построены по y в координатной паре (x, y), а x был индексом массива, как я мог определить, пересекались ли два моих массива в одной точке.

Спасибо.

+0

[sylvester.js] (http://sylvester.jcoglan.com/) - интересующая вас векторная и матричная библиотека. –

ответ

1

Попробуйте это:

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

Важным моментом является то, что для некоторого индекса я значения в [I] представляет собой (больше | меньше), чем Ь [I], и соотношение между [I + 1] и b [i + 1] - противоположное.

+0

Для больших наборов данных этот метод может начать выглядеть громоздким. Я думаю, что более интуитивно просто перебирать массивы и делать [i] -b [i]> 0. Это должно быть верно для всех или для всех ложных, если они не пересекаются. Если это верно для некоторых, а не для других, то они пересекаются. Вы также можете проверить равенство, если массивы касаются, но не пересекаются (например, 3,2,3 и 1,2,1). – Chris