Я сомневаюсь, что эту проблему можно решить вообще.Если мы рассматриваем время как третью пространственную ось, проблема эквивалентна нахождению любого пересечения между телами, очерченного контуром двух фигур между временами t_1 и t_2 .Лучшее (наиболее точное) решение, вероятно, состоит в использовании небольших временных шагов и рассмотрении пересечений между любыми двумя 3d-срезами, охватывающими время t_m и t_ (m + 1) ,Но это будет не намного лучше, чем рассмотрение только двухмерных цифр.
Что касается второй части, то, вероятно, нет - но, возможно, вы можете повторить моделирование с временным шагом, который зависит от ближайшего расстояния междудве цифры и скорость, с которой это расстояние изменяется?Это, вероятно, повысит точность и скорость обработки, но все равно не гарантирует нахождение всех пересечений.
Если вы это сделаете, я бы предложил шаг по времени, dt , что-то вроде
dt = Min (f * d / Max (-v, v_min), DT), где
DT - максимальный временной шаг, который вы допустите,
d - расстояниемежду ближайшими точками на рисунках
v - это скорость, с которой это расстояние изменяется (отрицательно, если они сближаются),
v_min - это минимальная (положительная) скорость, которую вы считаете реалистичнойдля моделирования,
f - это некоторый коэффициент меньше единицы, чтобы минимизировать количество ложных срабатываний, вызванных внезапными «скачками» скорости между двумя объектами.
Наконец, вы можете смоделировать несколько кругов вокругточки поворота фигур и безопасное перемещение фигур до тех пор, пока окружности не пересекаются (нужно только перевести окружности, поскольку они инвариантны при вращении) - тогда вы можете использовать небольшие временные шаги длядо тех пор, пока эти круги пересекаются.
Надеюсь, что это поможет.