Перейти к содержанию

Круглый стол

Аватар пользователя
#882
Оказывается, аналогия со второй частью не полная. Существуют случаи, когда по методу штрафа нет, а на самом деле он есть. Предположительно, проблема в чётных горизонталях. Буду разбираться :) Но сам факт, что можно стрелять без штрафа через неразбитые стены, остаётся фактом.

Добавлено через 11 часов 15 минут
Проверил метод. Существенных отличий от алгоритма второй части нет. Опять-таки во всём виноваты машинные погрешности.

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

Поэтому, в случае если линия атаки проходит через одну из вершин окрестности секции, в отсутствии или наличии штрафа можно убедиться только практически.

Теоретически, конечно, тоже можно, но нужно учитывать особенности арифметических операций с четырёхбайтовыми дробями.

Во всех остальных случаях погрешности роли не играют.