Оказывается, аналогия со второй частью не полная. Существуют случаи, когда по методу штрафа нет, а на самом деле он есть. Предположительно, проблема в чётных горизонталях. Буду разбираться
Но сам факт, что можно стрелять без штрафа через неразбитые стены, остаётся фактом.
Добавлено через 11 часов 15 минут
Проверил метод. Существенных отличий от алгоритма второй части нет. Опять-таки во всём виноваты машинные погрешности.
Единственное отличие методов в двойке и тройке заключается в способе построения "дискретной" линии атаки. В двойке линия строится с шагом 1/10 по большему измерению, а в тройке - 1/17! Число 1/10 = 0,1 спокойно чувствует себя в четырёх байтах, т.е. реальная дробь 0,1 равна машинной, а вот 1/17, как ни крути, не помещается и округляется, т.е. реальная дробь 1/17 НЕ равна машинной! Т.о. накопление погрешности в тройке идёт как по Х, так и по Y (в отличие от двойки, где оно идёт только по Y), что проявляет себя, когда линия атаки проходит через одну из вершин окрестности секции.Поэтому, в случае если линия атаки проходит через одну из вершин окрестности секции, в отсутствии или наличии штрафа можно убедиться только практически.
Теоретически, конечно, тоже можно, но нужно учитывать особенности арифметических операций с четырёхбайтовыми дробями.Во всех остальных случаях погрешности роли не играют.