Страница 1 из 1

задача-пересечение временных отрезков

Добавлено: 12 мар 2008, 12:44
Algor
кинте плз формулу как проверить есть ли пересечение между 2мя временными отрезками (d1-d2) и (d3-d4). не хочется закладывать проверку вариантов, наверняка что-то поэллегантнее есть.

Re: задача-пересечение временных отрезков

Добавлено: 14 мар 2008, 12:22
sz
Или я чего-то не понял, или:
d3 <= d2 and d1 <= d4

Re: задача-пересечение временных отрезков

Добавлено: 17 мар 2008, 15:05
aissp
ты прав - нет не понял :)

d3--------d1------------d2---------d4
d1--------d3------------d4---------d2
d1--------d3------------d2---------d4
d3--------d1------------d4---------d2

етто 4 варианта расположения, задача как проверить быстро? :)

перевод задачи на язык понятный в еа законченъ

Re: задача-пересечение временных отрезков

Добавлено: 17 мар 2008, 15:34
alpax
aissp писал(а):етто 4 варианта расположения, задача как проверить быстро? :)
Или я чего-то не понял, или проверка, предложенная sz, работает во всех этих случаях.

Re: задача-пересечение временных отрезков

Добавлено: 17 мар 2008, 15:58
aissp
о блин ето я дятел

Re: задача-пересечение временных отрезков

Добавлено: 17 мар 2008, 22:26
Аман Ванкуверский
причем в оффлайн разговоре выяснилось, что желательно уменьшить количество сравнений с 2-х до, хмм, меньшего количества

Re: задача-пересечение временных отрезков

Добавлено: 19 мар 2008, 15:53
sz
Аман Ванкуверский писал(а):причем в оффлайн разговоре выяснилось, что желательно уменьшить количество сравнений с 2-х до, хмм, меньшего количества
Это тоже можно.
if( ( ( d2 - d3 ) & ( d4 - d1 ) ) >= 0 )
{
// пересекаются
}

А если знать, для чего это нужно, то можно и от этой проверки избавиться.
Но вообще-то, копеечная экономия. Неужели бранч предиктор не справляется?