Вот один из методов:
Нарисуйте линию от начала координат до центра сферы, с которой вы хотите проверить столкновение.Теперь сделайте пересечение треугольника лучей, используя линию или луч, который вы только что создали.Теперь вы знаете, прошел ли луч через треугольник или нет.Если он прошел через треугольник, то найдите точку, в которой он пересек треугольник, и выполните простую проверку расстояния с центром сферы.Если расстояние больше радиуса сферы, столкновения не произошло.Если оно меньше, то сфера пересекает треугольник.
Также стоит проверить, на какой стороне треугольника находится центр сферы.Это простой точечный продукт между нормалью лица треугольника и центром сферы.значение 0 указывает, что центр сферы лежит в треугольнике, а положительный результат указывает на его одну сторону и отрицательный - на другую.
Вы также можете выполнить это вычисление для диапазона времени.Итак, если вы знаете, что моделируете секунду, и знаете скорость, с которой движется сфера, то вы можете вычислить точку в эту секунду, в которой сфера пересекла треугольник.Это довольно просто рассчитать.Если в начале сфера находится в 4 единицах от треугольника и через секунду она проходит 1 единицу через треугольник.Так за 1 секунду он проехал 5 ед.Следовательно, пересечение должно было произойти за 0,8 секунды до начала движения.Таким образом, вы можете реагировать на столкновения частиц, даже если они движутся так быстро, что в противном случае они могли бы проходить прямо через объект, с которым они сталкиваются.