我正在尝试制作分布式递归光线追踪器。我有一个 Vector3d 对象(代表完美/理想反射),我想在其上创建一个随机变换,以便获得与原始向量偏移一个角度的新向量。
有点像这样:
我认为正确的方法是以某种方式将矢量投影到 X 轴,沿 y 轴旋转随机角度,然后沿 x 轴旋转,然后进行逆投影。我不确定这些转换的矩阵是什么。
(基本上,我想创建与 OpenGL 的 glRotated() 相同的矩阵,而不需要为矩阵的每个元素手动输入巨大的公式)
谢谢!
我正在尝试制作分布式递归光线追踪器。我有一个 Vector3d 对象(代表完美/理想反射),我想在其上创建一个随机变换,以便获得与原始向量偏移一个角度的新向量。
有点像这样:
我认为正确的方法是以某种方式将矢量投影到 X 轴,沿 y 轴旋转随机角度,然后沿 x 轴旋转,然后进行逆投影。我不确定这些转换的矩阵是什么。
(基本上,我想创建与 OpenGL 的 glRotated() 相同的矩阵,而不需要为矩阵的每个元素手动输入巨大的公式)
谢谢!
偶然发现Rodrigues 的旋转公式,它可能提供一种更简单的矩阵计算方法。维基百科说它消除了对矩阵指数的需求,这听起来令人印象深刻。
这里还有其他三种方法。使用四元数的那个似乎具有符号最少的优势(?)。