Releases: jewettaij/superpose3d_cpp
updated submodule (jacobi_pd) to latest commit
Very small update. After updating to the latest version of jacobi_pd, a few namespaces and include files needed to be updated ("matrix_alloc"->"matrix_alloc_jpd"). (Both superpose3d.hpp and test_superpose3d.cpp borrow the short routines for allocating 2D arrays located in the "matrix_alloc_jpd.hpp" include file.)
bugfix: I no longer assume namespace std is enabled
Replaced "vector" with "std::vector".
Thanks to github user KeeganBruer for reporting this.
updated jacobi_pd
Updated jacobi_pd to the latest version.
Made corresponding changes to peigencalc.hpp.
The functionality of the library should be unaffected.
hardened against nonsensical input
now accepts arrays of length 0 or 1 without crashing
quaternions are available
The quaternion, q, (corresponding to rotation R) is now available to the caller. Like R, T, and c, the quaternion, q, is a public data member of the Superpose3D class. From it, the rotation angle and rotation axis can easily be determined.
initial stable release
testing is complete. code has been cleaned up. documentation is (hopefully) accurate.
generalized arrays + bugfix (when allow_rescale=true, ie. when c≠1)
Two big changes: 1) all input arrays (X,x,w) have been generalized. Any C++ object that supports indexing [] can be used, including vector<vector> and double**, for example. 2) BUGFIX: RMSD is now calculated correctly when allow_rescale==true. (Equivalently, when c≠1. Note: The optimal rotation and translation are not effected. They continue to be calculated correctly. However the estimate of the RMSD was incorrect. Now RMSD is reported correctly.) This bug was detected using more rigorous automated testing than I used in the past. Those tests are now included in "tests/test_superpose3d.cpp" and ".travis.yml". Tests for memory safety and code coverage have also been added.
speed enhancements (new eigenvector code)
speed improvements (due to replacing the eigenvector calculation code). Also: The copy and move constructors, assignment operator are now public. (They were accidentally left private in earlier versions of the code.).
WARNING:
I may need to change the API in future updates.
updated include paths
Updated to the newest version of the "lambda_lanczos" submodule.
This should make it cleaner and easier for everybody who uses this library because now they can simply copy all of the header files from "include/" and "lambda_lanczos/include/" into the same directory. When they wish to compile your code, then set your include path to include that directory.
(Previously it was necessary to mention the name of the subdirectory where the lambda_lanczos.hpp header files were located ie. "lambda_lanczos/lambad_lanczos.hpp".)
initial release
This version of superpose3d.hpp passes all tests, but I have yet to test it for memory leaks. I'll try running valgrind on it soon.