Я уверен, что этого, должно быть, задавали раньше, но я не нахожу его: я нахожу только связанные, но более сложные вопросы.
У меня есть четыре точки, представляющие две строки:
A C B D
|------*---|-----+----|-*---+---|----------|
0 10 20 30 40
Итак, в примере AB = {7, 21}
и CD = {16,26}
. (Линии могут быть в любом отношении друг к другу и в любом размере.) Я хочу выяснить, перекрываются ли они или нет, и насколько это возможно. (В примере ответом будет 5.) Мое текущее решение включает в себя сложную сложную операцию if/then, и я не могу не думать о хорошем арифметическом решении. Есть?
(P.S. Действительно, я делаю пересечение с ограничивающими прямоугольниками, но если я могу получить его в одном измерении, то другое будет очевидно.)