Re: [SVGF1.12 LC] marker direction if average direction is zero?

Anthony Grasso:
> Hi Dr. Hoffmann,
>
> Nice find! This is a very interesting case you raise. We noted this comment
> (ISSUE-2337 [1]) in our list of SVG Full 1.1 Last Comments to address.
>
> After discussion in our telephone conference [2], I was assigned ACTION-
> 2814 [3] to add wording to the specification. We decided that for this
> particular case in SVG Full 1.1 2nd that the behaviour is undefined. The
> wording has now been added and can be found in the current unpublished
> version of the SVG Full 1.1 2nd Edition specification [4]. We will however,
> look to define a behaviour for this case in SVG 2 [5].
>
> Please let the SVG Working Group know at your earliest convenience if the
> change satisfactory.

Sure, for SVG1.1 it is ok to say it is undefined, especially because in
already existing viewers there seems to be a wide range of variants to
display this ;o) And obviously authors cannot expect, that already published
versions of viewer care about the second edition of the recommendation ;o)


About a meaningful defintion for future versions:


Jasper van de Gronde:

>Note that it's not as undefined as declaring it simply "undefined" would 
>suggest. Actually, with the current wording renderers would always have 
>two (and ONLY two) choices, as the bisector is technically a line, 
>giving rise to two possible vectors. It's just that normally it's 
>obvious that the vector corresponding to the smaller angle should be 
>chosen. In the case of two opposite tangent vectors it's just that there 
>isn't a smaller angle.
....

If we assume that an author uses such a marker typically to indicate
something like the progression direction of the path, due to all of my
examples it would be useful to align the marker direction in such a case
perpendicular to the two tangents. This corresponds to a limes
of the bisector angle going to zero.

The main problem seems to be the orientation.
If the subpath/path fragment before and after this degenerate 
point have a direction, this can be used to determine the orientation
of the marker from a non local 'before' to a non local 'after' or maybe
from higher order derivatives (L'Hospital? Did not test, if this is 
usable here).
This works for example (a) for something like
M-100,-100C-50,-50 0,0 200,-200C0,0 50,50 100,100z
The marker direction useful for authors points here into the direction
l1,1 at M200,-200.
 
In the degenerate case of two reverse straight lines there is
no such information remaining.
For example (b)
M0,0 200,200 0,0 -200,-200z 
in this case there is no indication of a progress direction at all.
At least for such cases one can only define an arbitrary orientation,
in this case this at M200,200 and M-200,-200 either l-1,1 or l1,-1.

Another problematic sample (c):
M-100,-100C-50,-50 0,0 200,-200C-50,50 -50,-50 -100,-100z

Because in (b) there is not even a chance for programs to 
guess the intention of the author, if could help here to provide an 
option for authors to note their intention. On the other hand, for such
cases maybe it is the best approach that authors have to realise 
the marker manually ;o) Therefore it would already help to define, 
that for such degenerate cases the markers have not to be displayed 
at all instead of a display in an arbitrary direction, not related to the
intentions of the author...

Olaf

Received on Wednesday, 6 October 2010 10:25:21 UTC