|
|
@ -536,19 +536,9 @@ struct XYZEval { |
|
|
|
// Reset all to 0
|
|
|
|
FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =) 0; } |
|
|
|
|
|
|
|
// Setters taking struct types and arrays
|
|
|
|
FI void set(const T px) { x = px; } |
|
|
|
FI void set(const T px, const T py) { x = px; y = py; } |
|
|
|
FI void set(const XYval<T> pxy) { x = pxy.x; y = pxy.y; } |
|
|
|
FI void set(const XYZval<T> pxyz) { set(LINEAR_AXIS_ELEM(pxyz)); } |
|
|
|
#if HAS_Z_AXIS |
|
|
|
FI void set(LINEAR_AXIS_ARGS(const T)) { LINEAR_AXIS_CODE(a = x, b = y, c = z, u = i, v = j, w = k); } |
|
|
|
#endif |
|
|
|
#if LOGICAL_AXES > LINEAR_AXES |
|
|
|
FI void set(const XYval<T> pxy, const T pe) { set(pxy); e = pe; } |
|
|
|
FI void set(const XYZval<T> pxyz, const T pe) { set(pxyz); e = pe; } |
|
|
|
FI void set(LOGICAL_AXIS_ARGS(const T)) { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, u = i, v = j, w = k); } |
|
|
|
#endif |
|
|
|
// Setters for some number of linear axes, not all
|
|
|
|
FI void set(const T px) { x = px; } |
|
|
|
FI void set(const T px, const T py) { x = px; y = py; } |
|
|
|
#if HAS_I_AXIS |
|
|
|
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; } |
|
|
|
#endif |
|
|
@ -558,6 +548,18 @@ struct XYZEval { |
|
|
|
#if HAS_K_AXIS |
|
|
|
FI void set(const T px, const T py, const T pz, const T pi, const T pj) { x = px; y = py; z = pz; i = pi; j = pj; } |
|
|
|
#endif |
|
|
|
// Setters taking struct types and arrays
|
|
|
|
FI void set(const XYval<T> pxy) { x = pxy.x; y = pxy.y; } |
|
|
|
FI void set(const XYZval<T> pxyz) { set(LINEAR_AXIS_ELEM(pxyz)); } |
|
|
|
#if HAS_Z_AXIS |
|
|
|
FI void set(LINEAR_AXIS_ARGS(const T)) { LINEAR_AXIS_CODE(a = x, b = y, c = z, u = i, v = j, w = k); } |
|
|
|
#endif |
|
|
|
FI void set(const XYval<T> pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); } |
|
|
|
#if LOGICAL_AXES > LINEAR_AXES |
|
|
|
FI void set(const XYval<T> pxy, const T pz, const T pe) { set(pxy, pz); e = pe; } |
|
|
|
FI void set(const XYZval<T> pxyz, const T pe) { set(pxyz); e = pe; } |
|
|
|
FI void set(LOGICAL_AXIS_ARGS(const T)) { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, u = i, v = j, w = k); } |
|
|
|
#endif |
|
|
|
|
|
|
|
// Length reduced to one dimension
|
|
|
|
FI T magnitude() const { return (T)sqrtf(LOGICAL_AXIS_GANG(+ e*e, + x*x, + y*y, + z*z, + i*i, + j*j, + k*k)); } |
|
|
|