Эффективный математический алгоритм для вычисления пересечений

Для разработки игры мне нужен алгоритм, который может вычислять пересечения. Я решил проблему, но способ, которым я это сделал, действительно неприятен, и я надеюсь, что у кого-то здесь может быть более элегантное решение.

Пара точек представляет конечные точки линии, проведенной между ними. Учитывая две пары точек, пересекаются ли нарисованные линии, и если да, то в какой точке?

Так, например, назовите линии (A.x, A.y) - (B.x, B.y) и (C.x, C.y) - (D.x, D.y)

Кто-нибудь может придумать решение? Решение на любом языке подойдет.

Редактировать: Точка, которую я должен был прояснить, алгоритм должен возвращать false, если точка пересечения находится за пределами отрезков.

Ответы на вопрос(9)

Ваш ответ на вопрос