Skip to content

iterative ref: test uniform distribution of SO(3) #39

@geoffwoollard

Description

@geoffwoollard

For orthonormality

  • orthogonality: each R.dot(R.T) is close np.eye(3)
  • normality: np.linalg.det(R) is close 1

And I think something for uniformity would be great. If you can come up with some heuristic, would be a nice start. Doesn't have to be rigorous, just protest against a bad fail case. Some ideas (that work with large # of rotations)

  • project to the three coordinates used to plot on sphere. Check roughly same amount above/below, through the three axes (up/down; left/right; front/back)
  • convert to some encoding (Euler angles???) and check stats on those encoding (I think two Euler angles (ZYZ or ZXZ) are uniform and one is not)
  • integrate with an even function (e.g. x2 + y2 + z2) that should be double the integration on half. If the function is odd (e.g. x3 + y3 + z3) it should integrate to roughly one.
    • even: (axis_3_vectors[half_idx]**2).sum() is close 2*axis_3_vectors.sum()
    • odd: (axis_3_vectors[half_idx]**3).sum() is close 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions