Формула для отражения легче понять, если подумать о геометрическом значении операции «скалярное произведение».
Точечное произведение между двумя трехмерными векторами математически определяется как
<a, b> = ax*bx + ay*by + az*bz
но у него хорошая геометрическая интерпретация
Точечное произведение между a и b является длиной
проекции a сверх b , взятой с
отрицательный знак, если два вектора указывают на
противоположные направления, умноженные на длину b .
То, что сразу становится очевидным при использовании этого определения и что не очевидно, если вы посмотрите только на формулу, это, например, то, что скалярное произведение двух векторов не меняется, если система координат вращается, что точечное произведение двух перпендикулярные векторы равны 0 (длина проекции явно равна нулю в этом случае) или что произведение точки вектора само по себе является квадратом его длины.
Что-то менее очевидное при использовании геометрической интерпретации состоит в том, что скалярное произведение коммутативно, т. Е. <a, b> = <b, a>
(факт очевиден с учетом формулы).
Важным моментом, который необходимо учитывать, является также то, что если длина b равна 1, то скалярное произведение <a, b>
- это просто длина проекции a над b (взято с соответствующим знаком).
При такой интерпретации формула для вычисления отражения над плоскостью довольно легко понять:
Чтобы вычислить отраженный вектор r , учитывая вектор a и плоскость с нормальной n , вам просто нужно использовать формулу:
r = a - 2<a, n> n
высота ч на рисунке в данном случае равна <a, n>
(обратите внимание, что n считается единицей длины), поэтому должно быть ясно, что вам нужно для перемещения в два раза выше этой высоты в направлении нормали.
Если вы рассмотрите правильные знаки точечных произведений, вы должны увидеть, что формула применяется также тогда, когда вектор инцидента a и плоскость нормали n обращены в одном направлении.