§ Вывод формулы для отражения

После всех перипетий, наконец, можно приступить к рассмотрению такой интересной вещи, как зеркальное отражение. Я сам недавно о нем узнал, примерно недели 2 назад, и несколько раз применил и остался доволен, счастлив и т.д. Что такое отражение? Это когда луч, падающий на поверхность, отбивается от этой поверхности на тот же самый угол. Угол, конечно же, между перпендикулятором к поверхности (нормаль) и самой поверхностью:

Что мы видим? Я вижу, что надо провести проекцию точки L в точку M, чтобы образовался прямоугольний треугольник (как же без него?). Потом можно будет, зная вектор проекции, узнать также вектор проекции с другой стороны, с точки R на точку M. Что мы знаем? Мы знаем вектор OL (падающий луч) и вектор ON (нормаль). Нужно узнать вектор OR (отраженный луч). Договоримся так, что все вектора имеют единичную длину, чтобы не морочить себе голову с вычислениями длин.
Для начала, вспомним, что OM - это прилежащий катет к гипотенузе OL, а это значит, что:
cos\alpha = \frac{OM}{OL} => M = Lcos\alpha
Вместо OM, OL, ON и пр, буду писать просто M, L, N и т.д.
Итак, мы узнали длину M, это важно, теперь надо узнать, где именно этот M будет, какие у него координаты, это сделать очень просто, а еще, если вспомнить, что cos\alpha , это скалярное произведение векторов:
\vec{M} = \vec{N}cos\alpha = \vec{N}\langle \vec{N},\vec{L}\rangle
Половина дела сделана, мы узнали, где будет точка M, а теперь бы неплохо узнать вектор ML, это делается просто вычитанием: из точки L вычитаем точку M:
\vec{ML} = L - M
Теперь же, чтобы найти точку R, надо полученный вектор ML вычесть из точки M, чтобы прийти в точку R:
R = M - ML
Здесь просто этот самый ML зеркально отражается от точки M, получается. Подставляем вместо ML:
R = M - (L - M) = M - L + M = 2M - L
Зная, как вычисляется M, получаем:
R = 2M - L = 2\vec{N}\langle \vec{N},\vec{L}\rangle - \vec{L}
Да это же элементарно, Ватсон!