Мне кажется, что вам просто нужно указать горизонтальное положение (при условии, что вы находитесь в поезде, который движется только в горизонтальном направлении) для вашей функции рисования.
def draw(angle, length, horiz_pos):
if speed() != 0: return True
clear()
forward(horiz_pos)
setheading(angle + pi)
pensize(max(round(length), 1))
pendown()
forward(length * 25)
penup()
dot(length * 10)
home()
update()
И затем изменитьвызов функции draw () путем передачи позиции, основанной на скорости * time_step, где скорость увеличивается (т.е. ускоряется).
acc = 1
while total_time < 30.0:
total_time += time_step
speed_horiz += accel_constant * time_step
speed += ngol * sin(angle) * time_step
pos += speed_horiz * time_step
angle += speed * time_step
if draw(angle, length, pos): break
sleep(time_step)