I don't think theres a sq() function in C. Also, don't you mean z instead of y?
I think it should be something like...
In addition, you might want to look at this or this as examples on how to modify the firmware for nonlinear motion.
I think it should be something like...
float c = z*axis_steps_per_unit[Z-AXIS]; target[Z_AXIS] = lround( sqrt( Scissor_arm_length*Scissor_arm_length - c*c ) );
In addition, you might want to look at this or this as examples on how to modify the firmware for nonlinear motion.