Повернуть направление в другом полушарии

В рамках трассировки Монте-Карло я создаю такие направления в полушарии, как этот.

double theta = acos(1 - 2 * uniformRandom01());
double phi = 2 * M_PI * uniformRandom01();
Vec direction(cos(theta) * cos(phi), sin(theta) * cos(phi), sin(phi));

Однако эти направления генерируются в полушарии, где его центром является вектор (0,1,0).

Теперь у меня есть точка пересечения с нормой. Как я могу повернуть сгенерированное направление, чтобы поместить его в полусферу с центром в точке пересечения нормали?

Пример полушарий
Это изображение из http://www.scratchapixel.com/lessons/3d-basic-rendering/global-illumination-path-tracing

Например, полусфера сгенерированного направления является нижней. Я хочу поместить это направление в другое полушарие, как 2 или 3 отскакивающих полушария.

Подскажите если не понятно,

Спасибо

0

Решение

Задача ещё не решена.

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

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

По вопросам рекламы [email protected]