private Complex GetDiskRodPosition(int rod, LevelDisk levelDisk) { Complex r = _frameRods[rod].pos; _frameRods[rod].height += levelDisk.height; Complex p = r * (1.0 - _frameRods[rod].height) * 1.5; return(p); }
private Complex GetDiskMovePosition(Tree.StepDisk stepDisk, LevelDisk levelDisk, double movePhase) { Complex pos0 = GetDiskRodPosition(stepDisk.rod0, levelDisk); if (movePhase == 0 || !stepDisk.move) { return(pos0); } Complex pos1 = GetDiskRodPosition(stepDisk.rod1, levelDisk); double k = Math.Pow(movePhase, 1.7); // compact parabolic return(pos0 * (1 - k) + pos1 * k); }