How to rotate two or more steppers simultaneously by giving ARRAY of angles?
(Half a year ago, but what the hey...)

Your motor1() and motor2() are currently written as:

do until done:
  take a step
  wait
end


, so yeah, one finishes before the next one even starts.

Each motor function needs to do:

if motor's current-position is not the final position,
   if it is time to take a step,
      take a step
      calc when to take another step
      calc motor's new current-position
   end
end


Now call your motor functions as frequently as possible. Notice that either if test can cause the function to return without doing anything - that is intentional.

This is non-blocking programming - coding in such a way that nothing keeps control while waiting for something to happen (clock ticks, in this case), it just does something, or does nothing, right now, if there is or is not something to do right now, but it does release the processor (the function returns immediately) whether it did something or not. 

I call these functions "maybe-do" functions:


maybe step a motor (if, and only if, a certain interval has passed, step the motor);
maybe light an LED (if, and only if, the button is being pressed and it wasn't pressed the last time we looked, turn on the LED;
maybe read the terminal keyboard (if there is at least one character in the Serial input buffer, collect a character).


Then your loop() function should do nothing but call each maybe-do function, in sequence, as fast as possible. And it follows from the above that your maybe-do functions need to execute as quickly as possible and do no more than is necessary to (1) decide whether to act, and if so, (2) to carry out its action, and (3) in either case, return immediately.


And - Bang-Boom! - right there is a half-semester course in block-free programming without interrupts!