Smooth arclength interpolation#404
Merged
ChrisRackauckas merged 13 commits intoSciML:masterfrom Mar 21, 2025
Merged
Conversation
|
Wow, you really went through that 👍 for usefulness, for now I only really got the case of advection simulation on the curve where you really need that, I don't know if there are others. |
Member
|
Looks reasonable to me.
🤷 put the notebook up somewhere and cite that. But the notebook shouldn't be in the history of the package, since that would cause repo bloat. |
ChrisRackauckas
previously approved these changes
Mar 21, 2025
Member
ChrisRackauckas
left a comment
There was a problem hiding this comment.
Requires a squash merge to make sure the memory of the notebook isn't in the core repo.
Member
|
Just realized, this is missing tests. |
Member
Author
|
Yep, I'm on it |
ChrisRackauckas
approved these changes
Mar 21, 2025
sathvikbhagavan
pushed a commit
to sathvikbhagavan/DataInterpolations.jl
that referenced
this pull request
Mar 22, 2025
…rpolation Smooth arclength interpolation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Over the past few weeks, in my hobby math and coding time I have been fixated on a question that arose here, namely: What is a good way to interpolate through a set of points in$\mathbb{R}^n, n \ge 2$ , which is $C^1$ smooth and parameterized by arc length?
I understood that a common approach here is to make an interpolation that is not by arc-length and then approximate the arc-length parameterization using numerical methods. I however figured there should be a way to do this without such heavy lifting. I tried several algebraic approaches which didn't really get me anywhere, so then I started looking for a more geometrically informed approach.
A quick Google search reveals this pathological method, which suffers from not being at all flexible, the effect of points being non-local, and having arbitrarily large detours if the points are distributed in an unfortunate way.
The core idea I had is to again start with a non arc-length parameterized curve, but then to approximate it with segments that are trivially parameterizable by arc-length, namely line- and circle-segments. I explain the full construction of the method in a notebook that I checked into this branch.
I am not sure this method is suitable for
DataInterpolations.jl, but it can make good use of the internals, so maybe it should be a separate package depending onDataInterpolations.jl.I now use$C^1$ smooth and supports vector valued interpolation. However, for this method also the effect of data points is non-local, which was my motivation for opening #401.
QuadraticSplineas the default 'shape-defining' curve, because it is a method that isI am btw not completely sure what to put in the docstring of
struct SmoothArcLengthInterpolation, because there are several different methods which are different entrypoints in the construction of the interpolation.