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); }