From 5cadde27d3ae451f68846877e19bcd2a581faffe Mon Sep 17 00:00:00 2001 From: David Crocker Date: Wed, 17 Feb 2021 11:17:15 +0000 Subject: Changhed bed transforms to use Bitmap::Iterate --- src/Movement/Move.cpp | 68 ++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 39 deletions(-) (limited to 'src/Movement') diff --git a/src/Movement/Move.cpp b/src/Movement/Move.cpp index 34d00531..3ec58395 100644 --- a/src/Movement/Move.cpp +++ b/src/Movement/Move.cpp @@ -603,29 +603,24 @@ void Move::BedTransform(float xyzPoint[MaxAxes], const Tool *tool) const noexcep if (!useTaper || toolHeight < taperHeight) { float zCorrection = 0.0; - const size_t numAxes = reprap.GetGCodes().GetVisibleAxes(); - const AxesBitmap axis0Axes = Tool::GetXAxes(tool); - const AxesBitmap axis1Axes = Tool::GetYAxes(tool); unsigned int numCorrections = 0; + const GridDefinition& grid = GetGrid(); + const AxesBitmap axis1Axes = Tool::GetAxisMapping(tool, grid.GetNumber1()); // Transform the Z coordinate based on the average correction for each axis used as an X or Y axis. - // TODO use Iterate when we have changed it to use inline_function - for (uint32_t axis0Axis = 0; axis0Axis < numAxes; ++axis0Axis) - { - if (axis0Axes.IsBitSet(axis0Axis)) - { - const float axis0Coord = xyzPoint[axis0Axis] + Tool::GetOffset(tool, axis0Axis); - for (uint32_t axis1Axis = 0; axis1Axis < numAxes; ++axis1Axis) - { - if (axis1Axes.IsBitSet(axis1Axis)) - { - const float axis1Coord = xyzPoint[axis1Axis] + Tool::GetOffset(tool, axis1Axis); - zCorrection += heightMap.GetInterpolatedHeightError(axis0Coord, axis1Coord); - ++numCorrections; - } - } - } - } + Tool::GetAxisMapping(tool, grid.GetNumber0()) + .Iterate([this, xyzPoint, tool, axis1Axes, &zCorrection, &numCorrections](unsigned int axis0Axis, unsigned int) + { + const float axis0Coord = xyzPoint[axis0Axis] + Tool::GetOffset(tool, axis0Axis); + axis1Axes.Iterate([this, xyzPoint, tool, axis0Coord, &zCorrection, &numCorrections](unsigned int axis1Axis, unsigned int) + { + const float axis1Coord = xyzPoint[axis1Axis] + Tool::GetOffset(tool, axis1Axis); + zCorrection += heightMap.GetInterpolatedHeightError(axis0Coord, axis1Coord); + ++numCorrections; + } + ); + } + ); if (numCorrections > 1) { @@ -644,29 +639,24 @@ void Move::InverseBedTransform(float xyzPoint[MaxAxes], const Tool *tool) const if (usingMesh) { float zCorrection = 0.0; - const size_t numAxes = reprap.GetGCodes().GetVisibleAxes(); + unsigned int numCorrections = 0; const GridDefinition& grid = GetGrid(); - const AxesBitmap axis0Axes = Tool::GetAxisMapping(tool, grid.GetNumber0()); const AxesBitmap axis1Axes = Tool::GetAxisMapping(tool, grid.GetNumber1()); - unsigned int numCorrections = 0; // Transform the Z coordinate based on the average correction for each axis used as an X or Y axis. - for (uint32_t axis0Axis = 0; axis0Axis < numAxes; ++axis0Axis) - { - if (axis0Axes.IsBitSet(axis0Axis)) - { - const float axis0Coord = xyzPoint[axis0Axis] + Tool::GetOffset(tool, axis0Axis); - for (uint32_t axis1Axis = 0; axis1Axis < numAxes; ++axis1Axis) - { - if (axis1Axes.IsBitSet(axis1Axis)) - { - const float axis1Coord = xyzPoint[axis1Axis] + Tool::GetOffset(tool, axis1Axis); - zCorrection += heightMap.GetInterpolatedHeightError(axis0Coord, axis1Coord); - ++numCorrections; - } - } - } - } + Tool::GetAxisMapping(tool, grid.GetNumber0()) + .Iterate([this, xyzPoint, tool, axis1Axes, &zCorrection, &numCorrections](unsigned int axis0Axis, unsigned int) + { + const float axis0Coord = xyzPoint[axis0Axis] + Tool::GetOffset(tool, axis0Axis); + axis1Axes.Iterate([this, xyzPoint, tool, axis0Coord, &zCorrection, &numCorrections](unsigned int axis1Axis, unsigned int) + { + const float axis1Coord = xyzPoint[axis1Axis] + Tool::GetOffset(tool, axis1Axis); + zCorrection += heightMap.GetInterpolatedHeightError(axis0Coord, axis1Coord); + ++numCorrections; + } + ); + } + ); if (numCorrections > 1) { -- cgit v1.2.3