Fix vector normalization in JD#17938
Merged
thinkyhead merged 4 commits intoMarlinFirmware:bugfix-2.0.xfrom May 11, 2020
Merged
Conversation
As far as I can see in the code, inverse_millimeters does not include extruder steps. Using inverse_millimeters to normalize unit_vec will therefore lead to incorrect results for non-travel moves and cause junction_cos_theta to be incorrect as well.
vgadreau
pushed a commit
to vgadreau/Marlin
that referenced
this pull request
May 29, 2020
jmp0x0000
pushed a commit
to jmp0x0000/Marlin
that referenced
this pull request
Aug 7, 2020
njibhu
pushed a commit
to njibhu/Marlin
that referenced
this pull request
Aug 24, 2020
HairingX
pushed a commit
to HairingX/Marlin
that referenced
this pull request
Jun 16, 2021
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.
Description
As far as I can see in the code,
block->millimetersand therebyinverse_millimetersdoes not include extruder steps (see this code). Usinginverse_millimetersto normalizeunit_vecwill therefore lead to incorrect results for non-travel moves and causejunction_cos_thetato be incorrect as well. This PR fixes that by correctly normalizingunit_vecin case the extruder moves.Note: I'm not too familiar with the Marlin codebase, so please have a good look at this to make sure I'm not missing something. If I'm wrong and
block->millimetersdoes include extruder steps, please let me know and I'll close this.Benefits
unit_vecwill actually be a unit vector after normalization.junction_cos_thetawill be correct for non-travel moves.Related Issues
Might affect #17920, because the incorrect normalization should result in a further reduced
limit_sqr. The effect might be too small to notice, though.