2012-12-04 39 views
1

我试图做一个分布式递归射线示踪剂。我有一个Vector3d对象(表示完美/理想的反射),我想在它上面创建一个随机变换,这样我就可以得到一个与原始矢量相差一个角度的新矢量。创建一个Matrix3d矩阵,将一个vector3d变换为一个圆锥体

排序是这样的: enter image description here

我认为正确的做法是,以某种方式投射矢量到X轴,由随机角度沿y轴旋转,然后沿x轴旋转,做反向投影。我不确定这些转换的矩阵是什么。

(基本上,我要创建的相同的矩阵OpenGL的glRotated(),而不巨大式中手动输入该矩阵的每个元素)

谢谢!

回答

0

偶然发现了Rodrigues' rotation formula,这可能提供了一种更简单的矩阵计算方法。维基百科表示,它消除了矩阵指数的需求,这听起来令人印象深刻。

其他三种方法是here。使用四元数的那个似乎具有最少符号的优点(?)。