public Fractal2DByLSystem(
     [NotNull] string startSystemСondition,
     double rotateAngle,
     [NotNull, ItemNotNull] IReadOnlyList <GenerativeRules> generativeRules)
 {
     _startSystemСondition = startSystemСondition ?? throw new Exception($"NotNull parameter {startSystemСondition} exception");
     _generativeRules      = generativeRules ?? throw new Exception($"NotNull parameter {generativeRules} exception");
     _rotateAngle          = GeometricExtensions.ToRadians(rotateAngle);
     _state = null;
 }
        public IReadOnlyList <PointF> Points(int stepCount)
        {
            IReadOnlyList <PointF> points;

            if (_state == null || stepCount != _state.StepCount)
            {
                points = GetNewPoints(stepCount);
                _state = new _2SLSystemState(stepCount, points);
            }

            points = _state.Points;
            if (_state.Equals(stepCount))
            {
                return(points);
            }

            _state = new _2SLSystemState(stepCount, points);
            return(points);
        }