public TAMStroke CreateRandomStroke(Vector2 center, TAMTone tone)
        {
            var size   = (float)_random.Next();
            var length = Mathf.Lerp(_generationConfiguration.StrokeLengthRange.x, _generationConfiguration.StrokeLengthRange.y, size);

            length += (float)_random.NextBetween(_generationConfiguration.StrokeHeightJitterRange.x, _generationConfiguration.StrokeLengthJitterRange.y);
            var height = Mathf.Lerp(_generationConfiguration.StrokeHeightRange.x, _generationConfiguration.StrokeHeightRange.y, size);

            height += (float)_random.NextBetween(_generationConfiguration.StrokeHeightJitterRange.x, _generationConfiguration.StrokeHeightJitterRange.y);

            float rotation;

            if (tone.StrokeOrientation == TAMStrokeOrientation.Horizontal)
            {
                rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter;
            }
            else if (tone.StrokeOrientation == TAMStrokeOrientation.Vertical)
            { // strokes vertical
                rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter + Mathf.PI / 2;
            }
            else
            {
                if (_random.NextBoolean())
                {
                    rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter;
                }
                else
                {
                    rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter + Mathf.PI / 2;
                }
            }
            return(new TAMStroke(center, height, length, rotation, _lastId++));
        }