Fix behaviour of BoxClipper3D#5769
Merged
mvieth merged 1 commit intoPointCloudLibrary:masterfrom Aug 3, 2023
Merged
Conversation
The constructor (as well as the setTransformation function) that takes a rotation, translation, and scaling as input, says in the documentation that theses transformations are applied to the box. But actually they are applied to the points. This commit changes the behaviour of the code to match the documentation. I considered changing the documentation to match the behaviour of the code, but - in my opinion it is useful to have a constructor/function to describe the box (rotation, box center, box dimensions) - the current code (which applies first scaling, then rotation, then translation to the points) is not very useful or intuitive. Imagine for example a box, one side twice as long as the others, and rotated by 45 degrees around some axis. Then it is impossible to find a scaling transformation and rotation to transform all points inside the box to the interval [-1; +1]³, considering the scaling is applied first and in each axis separately. It would always result in a parallelepiped. - if one specifically wants to rotate/translate/whatever the points, it is easy to do so by using the constructor/function that takes an Affine3f and construct for example `Eigen::Affine3f transform=Eigen::Translation3f(...)*Eigen::AngleAxisf(..., Eigen::Vector3f(...).normalized());` This also fixes incorrect references to a unit cube, which is a cube with edge length 1, or sometimes specifically a cube in the interval [0; 1]. However, BoxClipper3D uses a cube in the interval [-1; +1] (edge length 2).
Closed
larshg
approved these changes
Aug 3, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The constructor (as well as the setTransformation function) that takes a rotation, translation, and scaling as input, says in the documentation that theses transformations are applied to the box. But actually they are applied to the points. This commit changes the behaviour of the code to match the documentation. I considered changing the documentation to match the behaviour of the code, but
Eigen::Affine3f transform = Eigen::Translation3f(...) * Eigen::AngleAxisf(..., Eigen::Vector3f(...).normalized());This also fixes incorrect references to a unit cube, which is a cube with edge length 1, or sometimes specifically a cube in the interval [0; 1]. However, BoxClipper3D uses a cube in the interval [-1; +1] (edge length 2).
Fixes #3914