Пересечение треугольника и шара. С++

278
25 января 2018, 19:34

Есть игрок в виде шара и есть множество треугольников. У каждого треугольника есть 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 найти.

READ ALSO
Как перенести на новую строку не возвращая каретку?

Как перенести на новую строку не возвращая каретку?

В c++ перенос строки осуществляется через \n но он так-же переносит каретку в исходное состояние, пример:

228
Uniform initialization

Uniform initialization

В С++11 появился новый синтаксис инициализацииВот что по этому поводу пишет Скотт Майерс в книге Effective Modern C++:

229
NumberLong mongoDb java

NumberLong mongoDb java

Как в записать в mongo строку "1509137313000" что бы в базе она отображалась вот так

272
Java. Создание папок по списку из txt-файла

Java. Создание папок по списку из txt-файла

Я уже всю голову сломалПисал по-разному, но почему то из всего списка создаётся только два (всегда одни и те же StringBufferInputStream и Writer) каталога,...

209