2

我想从计算机程序中的 3D 体积中获取随机 2D 切片以生成噪声。我决定使用旋转矩阵,据我所知,它必须是旋转组 SO(3) 的成员。如何创建该组的统一随机成员?

4

2 回答 2

4

在 0 和 1 之间选择三个随机值 u 1、 u 2和 u 3 。

均匀随机四元数由下式给出

  • w = sqrt(1 - u 1 )sin(2pi*u 2 )

  • x = sqrt(1 - u 1 )cos(2pi*u 2 )

  • y = sqrt(u 1 )sin(2pi*u 3 )

  • z = sqrt(u 1 )cos(2pi*u 3 )

然后,您可以使用以下公式生成适当的旋转矩阵:

    |       2     2                                |
    | 1 - 2y  - 2z    2xy - 2zw      2xz + 2yw     |
    |                                              |
    |                       2     2                |
M = | 2xy + 2zw       1 - 2x  - 2z   2yz - 2xw     |
    |                                              |
    |                                      2     2 |
    | 2xz - 2yw       2yz + 2xw      1 - 2x  - 2y  |
    |                                              |
于 2012-05-24T22:14:54.503 回答
1

您可以绘制一个随机 3D 向量,由三个独立的随机变量作为每个轴组成。然后,您可以将此向量定义为随机 2D 切片的法线向量以及该 2D 切片与原点的距离。我很确定(尽管没有正式的证据)这种方法应该在可能的 2D 切片上提供均匀分布(前面的陈述基本上是非正式的)。

编辑:再三考虑,您可能应该绘制一个自变量来表示 2D 切片与原点的距离。否则,您将得到一个 2D 切片分布,这些切片更有可能与原点相距一定距离。

于 2012-05-24T21:10:45.580 回答