Browse Source

Merge pull request #5095 from thinkyhead/rc_fix_bilinear_math

Fix bilinear grid constraints
pull/1/head
Scott Lahteine 8 years ago
committed by GitHub
parent
commit
2e3110539b
  1. 16
      Marlin/Marlin_main.cpp

16
Marlin/Marlin_main.cpp

@ -8310,15 +8310,17 @@ void ok_to_send() {
float ratio_x = x / bilinear_grid_spacing[X_AXIS], float ratio_x = x / bilinear_grid_spacing[X_AXIS],
ratio_y = y / bilinear_grid_spacing[Y_AXIS]; ratio_y = y / bilinear_grid_spacing[Y_AXIS];
// Whole unit is the grid box index // Whole units for the grid line indices. Constrained within bounds.
const int gridx = constrain(floor(ratio_x), 0, ABL_GRID_POINTS_X - 2), const int gridx = constrain(floor(ratio_x), 0, ABL_GRID_POINTS_X - 1),
gridy = constrain(floor(ratio_y), 0, ABL_GRID_POINTS_Y - 2), gridy = constrain(floor(ratio_y), 0, ABL_GRID_POINTS_Y - 1),
nextx = min(gridx + 1, ABL_GRID_POINTS_X - 2), nextx = min(gridx + 1, ABL_GRID_POINTS_X - 1),
nexty = min(gridy + 1, ABL_GRID_POINTS_Y - 2); nexty = min(gridy + 1, ABL_GRID_POINTS_Y - 1);
// Subtract whole to get the ratio within the grid box // Subtract whole to get the ratio within the grid box
ratio_x = constrain(ratio_x - gridx, 0.0, 1.0); ratio_x -= gridx; ratio_y -= gridy;
ratio_y = constrain(ratio_y - gridy, 0.0, 1.0);
// Never less than 0.0. (Over 1.0 is fine due to previous contraints.)
NOLESS(ratio_x, 0); NOLESS(ratio_y, 0);
// Z at the box corners // Z at the box corners
const float z1 = bed_level_grid[gridx][gridy], // left-front const float z1 = bed_level_grid[gridx][gridy], // left-front

Loading…
Cancel
Save