Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2021-02-17 14:17:15 +0300
committerDavid Crocker <dcrocker@eschertech.com>2021-02-17 14:17:15 +0300
commit5cadde27d3ae451f68846877e19bcd2a581faffe (patch)
tree3ddb8b041b8a131946363dac457e7c0d89fd79ec /src/Movement
parent1b49872b6eaa90ab2517666de22ebf195b7503bc (diff)
Changhed bed transforms to use Bitmap::Iterate
Diffstat (limited to 'src/Movement')
-rw-r--r--src/Movement/Move.cpp68
1 files changed, 29 insertions, 39 deletions
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)
{