Normal distributed rotation matrix in 3D

1.6k Views Asked by At

How can I compute normally distributed 3D rotation matrices with Mathematica?

For 2D matrices I would sample a normal distributed angle and directly create a rotation matrix with:

normalRotation2[s_] := RotationMatrix[RandomVariate[NormalDistribution[0, s]]]

This has some kind of problems because the two tails of the distribution overlap at the far end due to the finite "size" of SO(2). I am not quite sure what the correct definition of normal distribution would be here... If there isn't any, let's use some next best concept like in normalRot2.

Now the question is how to do this in 3D?

Edit: For my purposes it would be enough to have an isotropic normal distribution.

1

There are 1 best solutions below

3
On BEST ANSWER

After some digging into this problem I came to this solution: A quaternion

q = normalize(1, N(0,s), N(0,s), N(0,s))

with N(0,s) the Gaussian normal distribution with zero mean and standard deviation s generates an approximativly normally distributed rotation for small s.