Как отразить вектор вдоль поверхности? - PullRequest
0 голосов
/ 23 мая 2019

Привет всем, я не смог найти никакого решения по этому поводу, поэтому я хотел спросить об этом на форуме.

При ссылке на изображение ниже, у меня есть кривая AB, и я хочу отразить вектор направления дБвдоль поверхности кривой.Я хочу только зеркальное направление.Поэтому мне нужно использовать эту кривую в качестве оси, чтобы отразить это направление. См. Изображение

1 Ответ

0 голосов
/ 23 мая 2019

2D кривая

Предполагая, что у вас есть нормализованный тангенс t = normalize(a-b), используйте следующую формулу, где · - это скалярное произведение:

dA = dB - 2*t*(dB·t)

Немного пояснений: t*(dB·t) - тангенциальный компонент. Удаление его один раз даст нормальный компонент, а удаление его дважды обратит тангенциальный компонент, что приведет к отраженному вектору.

3D-поверхность

Предполагая, что у вас есть нормальная n поверхности, используйте следующую формулу:

dA = -(dB - n*(dB·n)) + n*(dB·n)

, который можно упростить до dA = -dB + 2*n*(dB·n).

Немного пояснений: n*(dB·n) - это нормальный компонент. Сначала мы удаляем его из dB, так как мы хотим сохранить его. Таким образом, dB - n*(dB·n) является тангенциальным компонентом. Затем мы отменяем тангенциальный компонент и добавляем нормальный компонент обратно, чтобы получить отраженный вектор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...