Как узнать пересекает ли линия сферу в трёхмерном пространстве
Подскажите пожалуйста алгоритмы вычисления пересечения сферы отрезком в 3D пространстве. У меня есть вектор начала линии, вектор конца линии. Есть вектор положения сферы и её радиус. Как можно узнать пересекает ли линия сферу?
Ответы (1 шт):
Если расстояния до точек A и B от центра оба меньше радиуса - весь отрезок внутри сферы.
Если одно меньше, второе больше - точно пересекает :)
А вот если оба больше...
Для начала сместим все координаты так, чтоб центр сферы был в начале координат.
Отрезок параметрически задается как
Расстояния от точек отрезка до начала координат
Простейшая квадратичная функция от t. Ищем минимум. Если минимум достигается при 0<=t<=1, смотрим на его величину и сравниваем с радиусом (точнее, с квадратом радиуса) сферы. Если меньше - все, пересечение есть. Если больше - пересечения нет. Если минимум за искомыми границами [0,1] - пересечения нет.
Как найти минимум от квадратичной функции или скалярно вектора перемножить, надеюсь, знаете...

