Ist das nicht in erster Linie eine Frage deiner Bedienoberfläche? Wenn du grafisch die Bewegung der Motoren modellieren willst, brauchst du doch eigentlich "nur" einen Zeitstrahl und eine Möglichkeit, auf diesem Zeitstrahl die Position mit Kurven so hinzupfriemeln, wie du es brauchst. Lineare Bewegungen wären einfach, für komplexere Bewegungen könntest du Exponentialfunktionen oder Bezier-Kurven verwenden. Die Matehematik hinter Bezier-Kurven ist sicher etwas komplizerter, aber dafür kannst du direkt am Anfangs- und Endpunkt einer Bewegung ansetzen. Wenn du die Kurven hast, hast du somit ja auch die Motorposition zu jedem beliebigen Zeitpunkt oder andersrum, du kannst die Zeitpunkte für jeden Motorschritt berechnen. Wenn das in Echtzeit zu lange dauert, musst du halt ggf. die Schrittzeiten vorab berechnen, in Arrays speichern und dann abfahren.