После нескольких часов проб разных вещей разделение пути кажется лучшим подходом (и работает). Я разделил путь вниз по известной позиции и использовал код, как и раньше - но обновил для работы с двумя:
var intersectionDetail1 = path1.Data.FillContainsWithDetail(path2.Data);
var intersectionDetail2 = path1.Data.FillContainsWithDetail(path3.Data);
if (intersectionDetail1 != IntersectionDetail1.NotCalculated &&
intersectionDetail1 != IntersectionDetail1.Empty)
{
// collision with path part 1
}
if (intersectionDetail2 != IntersectionDetail2.NotCalculated &&
intersectionDetail2 != IntersectionDetail2.Empty)
{
// collision with path part 2
}
В этом примере путь 2 из оригинала был разделен на path2 и path3. Если у path1 есть коллизия с любым из них, они обнаруживаются отдельно.