I'm trying to modify the firmware base on marlin, I want the simpson can run as normal xyz machine and need't segementize. If success ,the calibration will be easy too.

I'v the second beta version ,but i need improve the limit to let three max arm length be the same.

It need simpson_size ,will be 250mm;max length of arm and home z height from bed.

simpson_tower1_x= -simpson_size/2.0; // front left tower

simpson_tower1_y= -simpson_size*sqrt3_6;

simpson_tower2_x= simpson_size/2.0; // front right tower

simpson_tower2_y= -simpson_size*sqrt3_6;

simpson_tower3_x= 0.0; // back middle tower

simpson_tower3_y= 2*simpson_size*sqrt3_6;

simpson_dz=MANUAL_Z_HOME_POS-sqrt(sq(SIMPSON_MAX_LENGTH)-sq(SIMPSON_SIZE/2.0/SIN_60));

Transform the Cartesian coordinates to simpson:

simpson_temp_z=sq(cartesian[Z_AXIS]-simpson_dz);

simpson[X_AXIS]=sqrt(sq(cartesian[X_AXIS]-simpson_tower1_x)+sq(cartesian[Y_AXIS]-simpson_tower1_y)+simpson_temp_z);

simpson[Y_AXIS]=sqrt(sq(cartesian[X_AXIS]-simpson_tower2_x)+sq(cartesian[Y_AXIS]-simpson_tower2_y)+simpson_temp_z);

simpson[Z_AXIS]=sqrt(sq(cartesian[X_AXIS]-simpson_tower3_x)+sq(cartesian[Y_AXIS]-simpson_tower3_y)+simpson_temp_z);