Releases: jewettaij/superpose3d
updated setup.py
scale factors (c coefficients) are hopefully correct now
This version fixes a bug that prevented "c" (the scale factor) from being calculated correctly. This bug was caused by a typo introduced in v1.1.0 (commit 91d30b8) when converting the for-loops into compact numpy expressions.
Hopefully scale factors are being calculated correctly now.
non-uniform weights should be working again
This fixes a bug which was introduced in v1.1.0.
When we first began using numpy to speed up the matrix operations (introduced in v1.1.0), we forgot to incorporate weights in one part of the code. So the python code worked when uniform weights were used (which occurs by default). But we forgot to make sure that non-uniform weights are working.
This code has finally been fixed, and the testing code has been updated.
fixed a mistake in the format of Superpose3D() return value
The first entry in the output of Superpose3D() is now a number instead of a rank-0 tensor. The previous behavior (rank-0 tensor) was a mistake which my automated tests failed to catch. Changing this might break backward compatibility for some users, but this new behavior is simpler and is consistent with the documentation.
alternative quaternion conventions
I added some comments explaining alternate conventions for representing rotations with quaternions. The code behavior is not effected. (Perhaps it was not necessary to draft a new release over this...)
significant speed improvements by replacing for-loops with numpy expressions
Removed all for-loops in the code to improve computational efficiency. Thanks to Alfredo Ricci Vásquez for submitting the PR containing these optimizations.
further hardening against nonsensical input
It now avoids crashing when invoked on empty arrays (length 0).
initial stable release
initial stable release. future API change extremely unlikely.
better error handling and unit testing
hardened against non-sensical user input. improved unit tests. added more silly badges.
quaternions available
Callers can supply an optional argument, q which will store the quaternion corresponding to rotation R. From it, the rotation angle and rotation axis can easily be determined.