Update quaternions to prevent sign flipping #623
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Licensing
This project is mostly composed of free and unencumbered software released into the public domain, and we are unlikely to accept contributions that are not also released into the public domain. Somewhere near the top of each file should have these words:
Closes #603
We've had a few discussions on the dev team about how to accomplish this, and, for the most part, we decided on implementing these changes through subclassing. This PR does not do that, but instead makes a quick and easy change that accomplishes the same thing but without isolating the change to LineScan cameras.
In order to access the quaternions from a LineScanner, it is necessary to go the route of LineScanner.FrameChain.Rotation.quats, and there are two types of rotations -- TimeDependent and Constant, so we would need at least 3 subclasses to achieve this (a custom frame chain + two types of custom rotations). TimeDependentRotation and ConstantRotation classes have methods that instantiate other TimeDependentRotation or ConstantRotation, so a lot of the methods can't use simple inheritance -- they'd need to have their logic copied and objects changed.
Ultimately, subclassing is turning out to be pretty bloated and messy. It's still possible, but this seems significantly cleaner, and I don't think the functionality inherently needs to be isolated to LineScanners.