GestureStroke HandleRegularStroke(Stroke stroke, GestureNormalizeSettings settings)
        {
            var points = lineReducer.ReduceLine(stroke.Points, tolerance, targetNormalizationPointCount);

            points = TranslateGestureToOrigin(points, settings.GestureCenter);
            points = ScaleGesture(points, settings.WidthNormalizeFactor, settings.HeightNormalizeFactor);
            return(new GestureStroke(points.ToArray()));
        }
        GestureStroke HandleDotStroke(Stroke stroke, GestureNormalizeSettings settings)
        {
            var point  = stroke.Points.First();
            var points = TranslateGestureToOrigin(new List <Vector2> {
                point
            }, settings.GestureCenter);

            points = ScaleGesture(points, settings.WidthNormalizeFactor, settings.HeightNormalizeFactor);
            return(GestureStroke.AsDot(points[0]));
        }
 GestureStroke NormalizeStroke(Stroke stroke, GestureNormalizeSettings settings)
 {
     return(GestureRecognizer.IsDot(stroke, targetNormalizationPointCount)
         ? HandleDotStroke(stroke, settings)
         : HandleRegularStroke(stroke, settings));
 }