Преобразование мировых космических векторов в локальное пространство

Я пишу программу трассировки лучей, которая пересекает сферу с источником света. У меня есть векторы

  • wo (w — исходящий)
  • wi (w — входящий)
  • n (нормаль поверхности)

введите описание изображения здесь

Как перенести эти векторы из мировой системы координат в локальную систему координат. Я искал алгоритм c ++, преобразования для того, чтобы векторы лежали в одной и той же полусфере. Спасибо.

Замечания:
Например, нормальные векторные координаты в этой локальной системе координат:
n2 = вектор (x = 0, y = 1, z = 0)

Редактировать:
Я ищу локальные значения координат xyz «wo1», «wi1» и «n2».

1

Решение

Вы проецируете свои векторы, которые лежат в мировой системе координат, на векторы, которые составляют основу вашей локальной системы координат.

Например, если базис вашей локальной системы координат представляет собой триплет векторов (например, Lx, Ly, Lz), которые охватывают ваше локальное векторное пространство. wo Координаты в локальной системе будут:

wo_local_x = wo . Lx;
wo_local_y = wo . Ly;
wo_local_z = wo . Lz;

где . обозначает точечное произведение.

1

Другие решения

Других решений пока нет …