Example #1
0
 public VcGenStroke()
 {
     m_stroker      = new MathStroke();
     m_src_vertices = new vertex_sequence();
     m_out_vertices = new point_d_vector();
     m_status       = status_e.initial;
 }
Example #2
0
        public static void ShortenPath(vertex_sequence vs, double s, uint closed)
        {
            //typedef typename VertexSequence::value_type vertex_type;

            if(s > 0.0 && vs.Size() > 1)
            {
                double d;
                int n = (int)(vs.Size() - 2);
                while(n != 0)
                {
                    d = vs[n].dist;
                    if(d > s) break;
                    vs.RemoveLast();
                    s -= d;
                    --n;
                }
                if(vs.Size() < 2)
                {
                    vs.RemoveAll();
                }
                else
                {
                    n = (int)vs.Size() - 1;
                    VertexDistance prev = vs[n - 1];
                    VertexDistance last = vs[n];
                    d = (prev.dist - s) / prev.dist;
                    double x = prev.x + (last.x - prev.x) * d;
                    double y = prev.y + (last.y - prev.y) * d;
                    last.x = x;
                    last.y = y;
                    if (!prev.IsEqual(last)) vs.RemoveLast();
                    vs.close(closed != 0);
                }
            }
        }