История изменений
Исправление Manhunt, (текущая версия) :
Если треугольник не вращается быстрее 180 градусов за 1 шаг, то все будет ок. Если вращается - ну тогда я не представляю чтоделать, да.
Уменьшать шаг.
Скажем, можно потребовать, чтобы перемещение каждой вершины треугольника за один шаг по времени было на порядок меньше чем длины смежных с ней ребер. Если это условие не выполняется, то или шаг слишком велик, или трубка попалась какая-то нехорошая, особенная.
Еще тут проблема - нельзя отличить пересечение стороны лучом от пересечения всех лучей, т.к. пересечение всех лучей топологически неотличимо от пересечения стороны со скручиванием :(
Если сделать как я предлагаю, то пересечение хотя бы двух лучей будет классифицировано как «нехорошая трубка». Если трубок с пересекающимися лучами у ТС мало, то их потом можно довычислить «из общих топологических соображений»: Создание алгоритма методом «научного тыка»? (комментарий)
Исходная версия Manhunt, :
Если треугольник не вращается быстрее 180 градусов за 1 шаг, то все будет ок. Если вращается - ну тогда я не представляю чтоделать, да.
Уменьшать шаг.
Скажем, можно потребовать, чтобы перемещение каждой вершины треугольника за один шаг по времени было на порядок меньше чем длины смежных с ней ребер. Если это условие не выполняется, то или шаг слишком велик, или трубка попалась какая-то нехорошая, особенная.
Еще тут проблема - нельзя отличить пересечение стороны лучом от пересечения всех лучей, т.к. пересечение всех лучей топологически неотличимо от пересечения стороны со скручиванием :(
Если сделать как я предлагаю, то пересечение хотя бы двух лучей будет классифицировано как «нехорошая трубка». Если трубок с пересекающимися лучами ТС мало, то их потом можно довычислить «из общих топологических соображений»: Создание алгоритма методом «научного тыка»? (комментарий)