Строго говоря, даже не времени, а угла поворота вала с поршнями.
Вертикальное положение относительно вала произвольного поршня forcer, расположенного на валу в угловой позиции phase, при произвольном положении вала alpha вычисляется по формуле:

Код:
y = Math.sin(alpha + phase) * radius
где radius — расстояние от центра вала до центра поршня.
Таким образом ты получаешь формулу, в которой с течением времени меняется alpha вала, давая новое положение каждого поршня. И кстати, подставив в эту же формулу cos вместо sin, ты получаешь возможность всегда знать, где должен находиться поршень в дисплейлисте —выше вала, или ниже. Ты это по знаку поймешь.