For people who visit this thread in the future, here's a different (more complicated) approach for animating between two paths. Note that, at the time of writing this, I haven't tested this, so look for bugs. If you find something better or have any suggestions, please keep extending this thread.
The problem with linearizing a path is, you don't know the value of n (see above). Whatever value you choose, with enough zoom (scale) you'll be able to see the angles, the smoothness is lost. You also need to control too many points, depending on your value of n.
Instead of getting a bunch of line segments, convert each verb to a cubic-bezier (find out how, for instance, using ConvertConicToQuads, etc). Curves can represent both lines and curves, this will preserve curvy-ness under zoom. Here's a simplified algorithm.
- Convert all verbs to cubics.
- If the number of verbs in both paths doesn't match, subdivide curves of the smaller path. Here's a sample algorithm.
- Convert the path to a linked list with each curve in a separate node.
- Use a max heap to keep track of the nodes to the length of the curves.
- Pop the top curve (node) in the heap, split it (https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm), push both the split curve.
- Now interpolate with equal verbs!
Suggestions welcome.