Example #1
0
        private static int getSubStrokesRange(int subStrokeCount)
        {
            if (looseness == 1.0)
            {
                return(CharConstants.MAX_CHARACTER_SUB_STROKE_COUNT);
            }
            double y0 = subStrokeCount * 0.25;

            double ctrl1X = 0.4;
            double ctrl1Y = 1.5 * y0;

            double ctrl2X = 0.75;
            double ctrl2Y = 1.5 * ctrl1Y;

            CubicCurve2D curve = new CubicCurve2D(0, y0, ctrl1X, ctrl1Y, ctrl2X, ctrl2Y, 1, CharConstants.MAX_CHARACTER_SUB_STROKE_COUNT);
            double       t     = curve.GetFirstSolutionForX(looseness);

            return((int)Math.Round(curve.GetYOnCurve(t)));
        }
Example #2
0
        private static int getStrokesRange(int strokeCount)
        {
            if (looseness == 0.0)
            {
                return(0);
            }
            else if (looseness == 1.0)
            {
                return(CharConstants.MAX_CHARACTER_STROKE_COUNT);
            }
            double ctrl1X = 0.35;
            double ctrl1Y = strokeCount * 0.4;

            double ctrl2X = 0.6;
            double ctrl2Y = strokeCount;

            CubicCurve2D curve = new CubicCurve2D(0, 0, ctrl1X, ctrl1Y, ctrl2X, ctrl2Y, 1, CharConstants.MAX_CHARACTER_STROKE_COUNT);
            double       t     = curve.GetFirstSolutionForX(looseness);

            return((int)Math.Round(curve.GetYOnCurve(t)));
        }
Example #3
0
        private static double[] initCubicCurveScoreTable(CubicCurve2D curve, int numSamples)
        {
            double x1 = curve.X1;
            double x2 = curve.X2;

            double range = x2 - x1;

            double x    = x1;
            double xInc = range / numSamples;

            double[] scoreTable = new double[numSamples];
            double[] solutions  = new double[1];

            for (int i = 0; i < numSamples; i++)
            {
                double t = curve.GetFirstSolutionForX(Math.Min(x, x2));
                scoreTable[i] = curve.GetYOnCurve(t);
                x            += xInc;
            }
            return(scoreTable);
        }
Example #4
0
        private static double[] initLengthScoreTable()
        {
            CubicCurve2D curve = new CubicCurve2D(0, 0, 0.25, 1.0, 0.75, 1.0, 1.0, 1.0);

            return(initCubicCurveScoreTable(curve, 129));
        }
Example #5
0
        private static double[] initDirectionScoreTable()
        {
            CubicCurve2D curve = new CubicCurve2D(0, 1.0, 0.5, 1.0, 0.25, -2.0, 1.0, 1.0);

            return(initCubicCurveScoreTable(curve, 256));
        }