Definitions
A path
is simply an SVG path. Since all SVG drawing primitives (polygon, rect,
ellipse, circle, etc.) can be drawn using SVG path and its subcommands,
path is the only SVG primitive we need to consider for sufficient
generality for the discussion here.
A point pj =(x,y) is said to be visited
by a path, if its coordinates (x,y) lie upon the path as drawn.
Examples:
If P=<path d="M 0,0 C 100,-100
200,100 300,0 L 400,0">, the points p=(300,0) and q=(400,0) are
both visited by the path. Likewise, though the point r=(350,0) does not
appear in the path's d attribute, it is,
nonetheless, visited
by P, since the L subcommand draws a line from p to q which,
geometrically, passes through r. On the other hand, the point
s=(200,100), though appearing in P's d attribute, is not
visited
by P, since s is merely a control point of the Bezier curve, but is not
actually coincident with the path, as drawn.
A path
segment is a sequence of points S=(p1,p2,p3...,
pn) in which
each pj is an (x,y)
coordinate contained in an SVG path using any of
the path subcommands except {M, m, Z and z}; pj+1
appears contiguous in
the path's "d" attribute to pj;
and the path actually visits the
points p1 and pn
(the starting and ending points of the segment).
A point q on a path P is called a visible point
of P if q is visited by P and if it is neither hidden by other objects
in the SVG which might occlude it nor rendered invisible due to styling
(such as by stroke-dasharray or visibility),
clipping, masking, filters, gradients or the like. That is, the point
can be seen (as by an eye or a scene reader) in the SVG image as
rendered.
Examples:
in the path P=<path d="M 0,0 C 100,-100
200,100 300,0 L 400,0">, we have p1=(0,0),
p2=(100,-100),
p3=(200,100), p4=(1=300,0)
and p5=(400,0) as the
points used to specify
the path.
(p1,p2,p3,p4)
and (p1,p2,p3,p4,p5)
are both path segments of P, since all
criteria are met. (p1,p2,p3)
is not since P never visits the point p3,
since p3 is merely a cubic Bezier control point.
(p1,p3,p2,p4)
is not a segment of P since the contiguity requirement is not met.
A point q on a path P is called an endpoint of P if
- q is visible,
- P
is continuous until q: namely that there is a sequence of visible
points S=(p1, p2, ...pn, q) of P such that if , with pn=(x1,y1) and
q=(x2,y2),and given any distance d>0 there exists another point
r=(x3,y3) such that r is visible and either (x1<x3<x2 or
(x1>x3>x2) and (y1<y3<y2 or y1<y3<y2).
- Suppose
q and z are two points, both visited by P. Suppose also
that q is visible and z is not visible. If any point w located on P
between q and z is invisible, then q is an endpoint.
If b is a point visible along P, and P is continuous at b, but P is
only semi-differentiable at b (so that the derivative of P at b is not
continuous), then b is callled a breakpoint of P.
If q is an endpoint of path P then if the line extended by P from
q (passing through q and having the slope of P at q -- and having the
same direction of all points close to q and visible on P) passes
through a point w, then we say P can be extended to w (through q).
(alternatively, we might say that P can be extended from q to w)
anticipatorily
contiguous refers to two path segments (not necessarily
of the same path): S1=(p11,p12,
...,p1m-1,p1m)
and S2=(p21,p22,
...p2n), in which p1m and p2n are endpoints (or breakpoints) of S1 and S2, respectively, and where S1 can be extended from p1m to p2n and S2 can be extended from p2n to p1m . The paths S1 and S1 are said to be anticipatorily contiguous.
A "draft"
is meant to refer to a connected sequence of drawing acts in which each
subpath in sequence is anticipatorily contiguous to the next.