@Afafks123132132165

Как поворачивать координату линии?

Дело такое хочу я сделать рейкастинг на javascript canvas и у меня тут проблемма вот есть у меня координаты луча который бросает игрок но такое дело как поворачивать сам конец луча тоесть как его вращять по окружности скажите пожалуйста.А то непонятно ничего
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker
Программист, энтузиаст
Начните с того, что, хотя бы, расскажите про двумерный или трехмерный случай идет речь.
Обычно конец луча никто никуда не поворачивает.
У вас есть луч и поверхность. Луч - это половина прямой. Если задать его уравнением и также уравнениями задать поверхность, а потом дополнительным неравенством добавить ограничения (поверхности и прямой), то решение получившейся системы будет точками пересечения луча и поверхности. Нас интересует ближайшая точка пересечения от начала луча.

Ваша поверхность в точке пересечения с лучом имеет нормаль. Это перпендикуляр к поверхности в данной точке.
Итак, дано:
точка старта луча (O),
точка пересечения (P) луча с поверхностью,
вектор нормали (n) в этой точке.
Нужно получить вектор (v) направления нового луча из точки P.

Построим вектор PO = O - P (да-да, любые координаты - это вектор из начала координат) Если вычесть из вектора O вектор P, получим вектор направления из P в сторону O.

Итак, у нас есть два вектора: PO и n. Угол падения у нас равен углу отражения и искомый вектор v будет лежать в плоскости этих двух векторов. Нам нужно повернуть вектор PO в упомянутой плоскости на удвоенный угол между нормалью и вектором PO.

Любую плоскость можно задать точкой и нормалью (вектором перпендикуляра к плоскости). Чтобы получить этот перпендикуляр, назовём его вектором w, нужно сделать векторное произведение PO на n. Это будет ось вращения. Она направлена будет по правилу "буравчика".
Чтобы повернуть вокруг этой оси ваш вектор PO, проще всего умножить его на матрицу поворота.
Вот статья, которая это с рисунками показывает.
https://scicenter.online/avtomatizatsiya-scicenter...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы