Not a Saturday, but there have been some significant developments this week, so an early coding update.
I'm pleased to announce that "Stage 1" of the project is complete! With recent changes, knot constraints now work on rational B-splines.
I invite you to try making some things with this now and give your opinions on the experience. Some concerns include, but aren't limited to:
- How responsive is Sketcher now? I kind of cheated in the above image in that there was only one degree of freedom, so dragging the weights was fairly smooth. With more degrees of freedom expect something like this (with 24 DOFs):
. - Does dragging things around change too many things? One of the biggest advantages of B-splines is their local support, which in simple terms means that changing some part of the B-spline can be done without changing the entire spline. Before knot constraints, this was the case.
However, as you can see in the previous clip, dragging the pole weight is changing everything else as well. Of course this won't happen if we constrain things first, but are there users who could use this level of freedom? - How well does this fulfill your use case? Being able to constrain knots is already quite powerful, but are there use cases still not fulfilled with it? For example, do you need tangency at knots?
What next?
So now that Stage 1 is completed, the next steps depend on user feedback. I was hoping to be ready with the required expressions for point-on-curve constraint by now, but unfortunately that's not the case. Meanwhile, tangency at knots seems almost certainly straightforward, so I could make it a "Stage 1.5". Lastly, I could instead go on a totally different direction and try to study the internals of the solver to see if it can be made more responsive and localized. This last idea is probably best discussed with @abdullah whenever he's back, since he created the solver.