|
|
@ -536,19 +536,9 @@ struct XYZEval {
|
|
|
|
// Reset all to 0
|
|
|
|
// Reset all to 0
|
|
|
|
FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =) 0; }
|
|
|
|
FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =) 0; }
|
|
|
|
|
|
|
|
|
|
|
|
// Setters taking struct types and arrays
|
|
|
|
// Setters for some number of linear axes, not all
|
|
|
|
FI void set(const T px) { x = px; }
|
|
|
|
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 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
|
|
|
|
|
|
|
|
#if HAS_I_AXIS
|
|
|
|
#if HAS_I_AXIS
|
|
|
|
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
|
|
|
|
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
@ -558,6 +548,18 @@ struct XYZEval {
|
|
|
|
#if HAS_K_AXIS
|
|
|
|
#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; }
|
|
|
|
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
|
|
|
|
#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
|
|
|
|
// 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)); }
|
|
|
|
FI T magnitude() const { return (T)sqrtf(LOGICAL_AXIS_GANG(+ e*e, + x*x, + y*y, + z*z, + i*i, + j*j, + k*k)); }
|
|
|
|