Generate Non-Parallel Axes
Generates n axes-of-rotation that are 'well-spaced', that is all axes are as far from being parallel as possible. The resulting axes minimize clustering. This is one way to generate a uniform sampling of 3D rotation axes.
INPUTS:
n, the number of axis to uniformly sample.
BACKGROUND:
This is a generalization of the Thomson problem (J.J. Thomson 1904). The Thomson problem determines the minimum energy configuration for n electrons confined to the surface of a sphere: http://en.wikipedia.org/wiki/Thomson_problem
To generate well-spaced axes, additional constraints are imposed by "coupling" each electron with an additional electron at its antipodal point, i.e. x and -x in 3-space.
The solution generates "maximally" separated directions in 3-space, where maximally means that the directions are as far from being parallel as possible.
CREDITS:
Based on code from Hao Peng and Yongyang Yu and their unpublished “Optimization on the surface of a hyper sphere”, https://www.cs.purdue.edu/homes/pengh/reports/590OP.pdf
Cite As
Aaron T. Becker's Robot Swarm Lab (2024). Generate Non-Parallel Axes (https://www.mathworks.com/matlabcentral/fileexchange/44515-generate-non-parallel-axes), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
- MATLAB > Graphics > 2-D and 3-D Plots > Surfaces, Volumes, and Polygons > Volume Visualization > Scalar Volume Data >
Tags
Acknowledgements
Inspired by: Suite of functions to perform uniform sampling of a sphere
Inspired: Control n MRI-powered actuators
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.