Есть игрок в виде шара и есть множество треугольников. У каждого треугольника есть 3 точки. Можно вычислить нормаль треугольника. Надо найти пересечение треугольника и шара.
В 2 видах найти:
1) Пересекается или нет сфера(радиус R) и треугольник. Если пересекается то насколько глубоко( (R минус (расстояние от плоскости до точки))(только при случае касания грани а не ребра) ).
2) Шар движется по вектору v(x,y,z) из точки (x0,y0,z0). И на каком расстоянии x от 0 до X произойдёт касание треугольника. Решение через прохождение от 0 до X Малыми шагами или разделением пополам, и проверкой на столкновение каждый раз не очень подходит.
Нужны формулы.
Исходные данные:
glm::vec3 S; //положение сферы
glm::vec3 V; //единичный вектор движения
glm::vec3 P[3]; //треугольник
float R; //радиус сферы
float X; //расстояние движения
А также есть:
glm::cross //векторное произведение
glm::dot //векторное скалярное произведение
glm::normalize//нормализация вектора
Надо x найти.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей