commit
bbb2b86c34
11
Marlin/ubl.h
11
Marlin/ubl.h
@ -160,6 +160,7 @@
|
|||||||
unified_bed_leveling();
|
unified_bed_leveling();
|
||||||
|
|
||||||
FORCE_INLINE void set_z(const int8_t px, const int8_t py, const float &z) { z_values[px][py] = z; }
|
FORCE_INLINE void set_z(const int8_t px, const int8_t py, const float &z) { z_values[px][py] = z; }
|
||||||
|
|
||||||
int8_t get_cell_index_x(const float &x) {
|
int8_t get_cell_index_x(const float &x) {
|
||||||
const int8_t cx = (x - (UBL_MESH_MIN_X)) * (1.0 / (MESH_X_DIST));
|
const int8_t cx = (x - (UBL_MESH_MIN_X)) * (1.0 / (MESH_X_DIST));
|
||||||
return constrain(cx, 0, (GRID_MAX_POINTS_X) - 1); // -1 is appropriate if we want all movement to the X_MAX
|
return constrain(cx, 0, (GRID_MAX_POINTS_X) - 1); // -1 is appropriate if we want all movement to the X_MAX
|
||||||
@ -210,7 +211,8 @@
|
|||||||
*/
|
*/
|
||||||
inline float z_correction_for_x_on_horizontal_mesh_line(const float &lx0, const int x1_i, const int yi) {
|
inline float z_correction_for_x_on_horizontal_mesh_line(const float &lx0, const int x1_i, const int yi) {
|
||||||
if (!WITHIN(x1_i, 0, GRID_MAX_POINTS_X - 1) || !WITHIN(yi, 0, GRID_MAX_POINTS_Y - 1)) {
|
if (!WITHIN(x1_i, 0, GRID_MAX_POINTS_X - 1) || !WITHIN(yi, 0, GRID_MAX_POINTS_Y - 1)) {
|
||||||
SERIAL_ECHOPAIR("? in z_correction_for_x_on_horizontal_mesh_line(lx0=", lx0);
|
serialprintPGM( !WITHIN(x1_i, 0, GRID_MAX_POINTS_X - 1) ? PSTR("x1l_i") : PSTR("yi") );
|
||||||
|
SERIAL_ECHOPAIR(" out of bounds in z_correction_for_x_on_horizontal_mesh_line(lx0=", lx0);
|
||||||
SERIAL_ECHOPAIR(",x1_i=", x1_i);
|
SERIAL_ECHOPAIR(",x1_i=", x1_i);
|
||||||
SERIAL_ECHOPAIR(",yi=", yi);
|
SERIAL_ECHOPAIR(",yi=", yi);
|
||||||
SERIAL_CHAR(')');
|
SERIAL_CHAR(')');
|
||||||
@ -229,9 +231,10 @@
|
|||||||
//
|
//
|
||||||
inline float z_correction_for_y_on_vertical_mesh_line(const float &ly0, const int xi, const int y1_i) {
|
inline float z_correction_for_y_on_vertical_mesh_line(const float &ly0, const int xi, const int y1_i) {
|
||||||
if (!WITHIN(xi, 0, GRID_MAX_POINTS_X - 1) || !WITHIN(y1_i, 0, GRID_MAX_POINTS_Y - 1)) {
|
if (!WITHIN(xi, 0, GRID_MAX_POINTS_X - 1) || !WITHIN(y1_i, 0, GRID_MAX_POINTS_Y - 1)) {
|
||||||
SERIAL_ECHOPAIR("? in get_z_correction_along_vertical_mesh_line_at_specific_x(ly0=", ly0);
|
serialprintPGM( !WITHIN(xi, 0, GRID_MAX_POINTS_X - 1) ? PSTR("xi") : PSTR("yl_i") );
|
||||||
SERIAL_ECHOPAIR(", x1_i=", xi);
|
SERIAL_ECHOPAIR(" out of bounds in z_correction_for_y_on_vertical_mesh_line(ly0=", ly0);
|
||||||
SERIAL_ECHOPAIR(", yi=", y1_i);
|
SERIAL_ECHOPAIR(", xi=", xi);
|
||||||
|
SERIAL_ECHOPAIR(", y1_i=", y1_i);
|
||||||
SERIAL_CHAR(')');
|
SERIAL_CHAR(')');
|
||||||
SERIAL_EOL;
|
SERIAL_EOL;
|
||||||
return NAN;
|
return NAN;
|
||||||
|
@ -231,8 +231,8 @@
|
|||||||
const float m = dy / dx,
|
const float m = dy / dx,
|
||||||
c = start[Y_AXIS] - m * start[X_AXIS];
|
c = start[Y_AXIS] - m * start[X_AXIS];
|
||||||
|
|
||||||
const bool inf_normalized_flag = isinf(e_normalized_dist),
|
const bool inf_normalized_flag = (isinf(e_normalized_dist) != 0),
|
||||||
inf_m_flag = isinf(m);
|
inf_m_flag = (isinf(m) != 0);
|
||||||
/**
|
/**
|
||||||
* This block handles vertical lines. These are lines that stay within the same
|
* This block handles vertical lines. These are lines that stay within the same
|
||||||
* X Cell column. They do not need to be perfectly vertical. They just can
|
* X Cell column. They do not need to be perfectly vertical. They just can
|
||||||
@ -403,9 +403,7 @@
|
|||||||
// as a vertical line move above.)
|
// as a vertical line move above.)
|
||||||
|
|
||||||
if (left_flag == (x > next_mesh_line_x)) { // Check if we hit the Y line first
|
if (left_flag == (x > next_mesh_line_x)) { // Check if we hit the Y line first
|
||||||
//
|
|
||||||
// Yes! Crossing a Y Mesh Line next
|
// Yes! Crossing a Y Mesh Line next
|
||||||
//
|
|
||||||
float z0 = ubl.z_correction_for_x_on_horizontal_mesh_line(x, current_xi - left_flag, current_yi + dyi);
|
float z0 = ubl.z_correction_for_x_on_horizontal_mesh_line(x, current_xi - left_flag, current_yi + dyi);
|
||||||
|
|
||||||
z0 *= ubl.fade_scaling_factor_for_z(end[Z_AXIS]);
|
z0 *= ubl.fade_scaling_factor_for_z(end[Z_AXIS]);
|
||||||
@ -433,9 +431,7 @@
|
|||||||
yi_cnt--;
|
yi_cnt--;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//
|
|
||||||
// Yes! Crossing a X Mesh Line next
|
// Yes! Crossing a X Mesh Line next
|
||||||
//
|
|
||||||
float z0 = ubl.z_correction_for_y_on_vertical_mesh_line(y, current_xi + dxi, current_yi - down_flag);
|
float z0 = ubl.z_correction_for_y_on_vertical_mesh_line(y, current_xi + dxi, current_yi - down_flag);
|
||||||
|
|
||||||
z0 *= ubl.fade_scaling_factor_for_z(end[Z_AXIS]);
|
z0 *= ubl.fade_scaling_factor_for_z(end[Z_AXIS]);
|
||||||
@ -463,6 +459,8 @@
|
|||||||
current_xi += dxi;
|
current_xi += dxi;
|
||||||
xi_cnt--;
|
xi_cnt--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (xi_cnt < 0 || yi_cnt < 0) break; // we've gone too far, so exit the loop and move on to FINAL_MOVE
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ubl.g26_debug_flag)
|
if (ubl.g26_debug_flag)
|
||||||
|
Loading…
Reference in New Issue
Block a user