예제 #1
0
        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);
        }
예제 #2
0
        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);
        }