Merge pull request #6568 from thinkyhead/rc_bilinear_extension
Add EXTRAPOLATE_BEYOND_GRID option to bilinear leveling
This commit is contained in:
		| @@ -825,6 +825,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -10585,12 +10585,25 @@ void ok_to_send() { | |||||||
|     const float x = RAW_X_POSITION(logical[X_AXIS]) - bilinear_start[X_AXIS], |     const float x = RAW_X_POSITION(logical[X_AXIS]) - bilinear_start[X_AXIS], | ||||||
|                 y = RAW_Y_POSITION(logical[Y_AXIS]) - bilinear_start[Y_AXIS]; |                 y = RAW_Y_POSITION(logical[Y_AXIS]) - bilinear_start[Y_AXIS]; | ||||||
|  |  | ||||||
|  |     #if ENABLED(EXTRAPOLATE_BEYOND_GRID) | ||||||
|  |       // Keep using the last grid box | ||||||
|  |       #define FAR_EDGE_OR_BOX 2 | ||||||
|  |     #else | ||||||
|  |       // Just use the grid far edge | ||||||
|  |       #define FAR_EDGE_OR_BOX 1 | ||||||
|  |     #endif | ||||||
|  |  | ||||||
|     if (last_x != x) { |     if (last_x != x) { | ||||||
|       last_x = x; |       last_x = x; | ||||||
|       ratio_x = x * ABL_BG_FACTOR(X_AXIS); |       ratio_x = x * ABL_BG_FACTOR(X_AXIS); | ||||||
|       const float gx = constrain(floor(ratio_x), 0, ABL_BG_POINTS_X - 1); |       const float gx = constrain(floor(ratio_x), 0, ABL_BG_POINTS_X - FAR_EDGE_OR_BOX); | ||||||
|       ratio_x -= gx;      // Subtract whole to get the ratio within the grid box |       ratio_x -= gx;      // Subtract whole to get the ratio within the grid box | ||||||
|       NOLESS(ratio_x, 0); // Never < 0.0. (> 1.0 is ok when nextx==gridx.) |  | ||||||
|  |       #if DISABLED(EXTRAPOLATE_BEYOND_GRID) | ||||||
|  |         // Beyond the grid maintain height at grid edges | ||||||
|  |         NOLESS(ratio_x, 0); // Never < 0.0. (> 1.0 is ok when nextx==gridx.) | ||||||
|  |       #endif | ||||||
|  |  | ||||||
|       gridx = gx; |       gridx = gx; | ||||||
|       nextx = min(gridx + 1, ABL_BG_POINTS_X - 1); |       nextx = min(gridx + 1, ABL_BG_POINTS_X - 1); | ||||||
|     } |     } | ||||||
| @@ -10600,9 +10613,14 @@ void ok_to_send() { | |||||||
|       if (last_y != y) { |       if (last_y != y) { | ||||||
|         last_y = y; |         last_y = y; | ||||||
|         ratio_y = y * ABL_BG_FACTOR(Y_AXIS); |         ratio_y = y * ABL_BG_FACTOR(Y_AXIS); | ||||||
|         const float gy = constrain(floor(ratio_y), 0, ABL_BG_POINTS_Y - 1); |         const float gy = constrain(floor(ratio_y), 0, ABL_BG_POINTS_Y - FAR_EDGE_OR_BOX); | ||||||
|         ratio_y -= gy; |         ratio_y -= gy; | ||||||
|         NOLESS(ratio_y, 0); |  | ||||||
|  |         #if DISABLED(EXTRAPOLATE_BEYOND_GRID) | ||||||
|  |           // Beyond the grid maintain height at grid edges | ||||||
|  |           NOLESS(ratio_y, 0); // Never < 0.0. (> 1.0 is ok when nexty==gridy.) | ||||||
|  |         #endif | ||||||
|  |  | ||||||
|         gridy = gy; |         gridy = gy; | ||||||
|         nexty = min(gridy + 1, ABL_BG_POINTS_Y - 1); |         nexty = min(gridy + 1, ABL_BG_POINTS_Y - 1); | ||||||
|       } |       } | ||||||
|   | |||||||
| @@ -823,6 +823,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -807,6 +807,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -807,6 +807,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -827,6 +827,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -815,6 +815,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -818,6 +818,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -853,6 +853,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -824,6 +824,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -824,6 +824,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -824,6 +824,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -823,6 +823,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -839,6 +839,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -844,6 +844,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -880,6 +880,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -815,6 +815,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -824,6 +824,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -943,6 +943,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -935,6 +935,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -941,6 +941,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -809,6 +809,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -827,6 +827,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -820,6 +820,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
| @@ -829,6 +829,10 @@ | |||||||
|  |  | ||||||
|   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) |   #if ENABLED(AUTO_BED_LEVELING_BILINEAR) | ||||||
|  |  | ||||||
|  |     // Beyond the probed grid, continue the implied tilt? | ||||||
|  |     // Default is to maintain the height of the nearest edge. | ||||||
|  |     //#define EXTRAPOLATE_BEYOND_GRID | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Experimental Subdivision of the grid by Catmull-Rom method. |     // Experimental Subdivision of the grid by Catmull-Rom method. | ||||||
|     // Synthesizes intermediate points to produce a more detailed mesh. |     // Synthesizes intermediate points to produce a more detailed mesh. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user