Closed bacchanalia closed 5 years ago
One thing to note is that as you change the number 0.8
in the above code, the left endpoint of the red arc moves proportionally. I think section
is simply broken. As discussed in IRC, my current thinking is that the problem is with the default implementation of section
here:
Transforming the parameter t1
to the parameter t1/t2
on the result of splitting at t2
assumes that parameters scale linearly. I think this may be true for individual segments, but it isn't true for trails, which give equal weight to each segment, i.e. assign parameter values in the range [i/n, (i+1)/n]
to segment i
if there are n
total segments. If one segment gets split, this reassigns parameter values in a strange way.
The comments in Diagrams.Parametric
seem to be explicit about the linear assumption.
We have the problem that the Parametric instance of Tails depends on the number of segements, but a linear reparameterization for Sectionable can not depend on the number of segments without information about the original parameterization. One possible solution is drop the Sectionable instance for Trails and introduce a new Section type that caries that info with it.
Proposal: fix the current instances so that they adhere to the property that for a <= b <= c, section t a c = section t a b <> section t b c and note in the documentation that they do not linearly reparameterize the section. Add two new types to wrap multisegment objects, I'll give them the placeholder names ProperSection and ProperParam. ProperSection still is parametric by segment, but has a linear reparameterization, and ProperParam is parametric by arclength.
Closed by #328.
Both red sections have the same start parameters and should therefore start in the same place.