public PlayerEvolution()
        {
            List <Range <PersonAge> > ranges = _phases
                                               .Select(p => p.AgeRange)
                                               .ToList();

            _ageRange = Range <PersonAge> .MergeRanges(ranges);

            _duration = Duration.FromAgeRange(_ageRange);
        }
        public FeatureImprovementRatio GetImprovementFromAge(PersonAge age)
        {
            CheckRule(new PersonAgeMustBeWithinAgeRangeRule(age, AgeRange));

            // recalculer l'abscisse pour que 0 <= x <= 1
            double x = (age.Years - AgeRange.Lower.Years) / Duration.FromAgeRange(AgeRange).Years;

            // calculer y entre 0 et 1
            double y = Math.Pow(x, EvolutionCurve.Value) * MaxFeatureImprovement.Value;


            return(new FeatureImprovementRatio(y));
        }