Ради полноты я добавлю еще один алгоритм в это обсуждение.
Предполагая, что читатель знает об ограничивающих прямоугольниках, выровненных по осям (если нет, то Google). Очень быстро можно найти пары ребер, чьи AABB конфликтуют, с помощью "алгоритма очистки и сокращения". (погугли это). Затем для этих пар вызываются процедуры пересечения.
Преимущество здесь в том, что вы можете даже пересекать непрямой край (круги и сплайны), и подход является более общим, хотя и почти таким же эффективным.