Announcements
Visit Fusion 360 Feedback Hub, the great way to connect to our Product, UX, and Research teams. See you there!
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Spline curve simplification (true curve-fitting)

Spline curve simplification (true curve-fitting)

Summary: Fusion 360 should be able to minimize the number of fit points used to define a spline curve based on a user-specified degree of fidelity to the original curve.

 

This suggestion is based partly on personal need and partly on the observation that users new to Fusion 360 splines frequently seem to approach them in a counterproductive way.

 

A typical case is that someone wants to replicate a curve found in some kind of reference material. They import a canvas and draw a fit-point spline. The problem comes in thinking that the more fit points are used, the higher the quality of the resulting spline. But in fact, exactly the opposite is true: the spline is obliged to hit every point exactly, so it writhes and contorts like a high-tension spring to accommodate all of those noisy extra points. The result is a spline that looks plausible from a distance but in fact has all kinds of subtle wiggles and curvature problems.

 

I think the underlying confusion relates to the general idea of curve-fitting. Usually when you talk about fitting a curve to some data, the software has a specific mathematical model in mind and it chooses parameters that minimize overall error while not necessarily regenerating every input data point exactly. But the "fitting" of a fit-point spline is more localized, and it's overdetermined. The generated spline is guaranteed to pass through every input point. The "fitting error" shows up as interstitial problems with your spline that you then have to live with for the rest of your design.

 

Users that haven't investigated this issue in detail typically seem to think that they're doing the former kind of fitting when they create a dense fit-point spline, but they're actually doing the latter. However, their fundamental intuition isn't wrong -- more data really should lead to better curve approximations. It would be both useful and natural for Fusion 360 to honor that intuition a bit more.

 

Exactly how you'd present this is up for debate, but here's one proposal: a Simplify command that you could apply to any existing fit-point spline. It would take a single parameter that controlled the degree of fidelity required, perhaps on an arbitrary scale from 0 to 1. At 1, the simplified spline would be identical to the input spline. At 0, it would be a straight line between the endpoints of the spline.

 

For example:

 

Screen Shot 2018-10-24 at 2.51.01 PM.png

 

p2v2.png

 

Screen Shot 2018-10-24 at 3.03.51 PM.png

 

Fusion 360 already does a very nice job of preserving spline curve shapes when fit points are deleted, so you can kind of do a low-rent version of this already. However, for Simplify, the existing fit points are irrelevant - the simplified curve might not share any fit points at all with the starting curve. Not only should Simplify decide on its own how many fit points are needed to replicate the general shape of the curve, but it should also decide where to put those points for optimal simplicity and fit.

 

I'm sure this is a computationally sophisticated operation, but Adobe Illustrator already does pretty much the same thing (also called Simplify in their UI), and very quickly, too. With the particular curve shown above, Illustrator does a significantly better job with 7 points than I was able to do freehand with 6, and that's using only cubic curves.

 

Mechanically, this Simplify concept would dovetail well with "convert existing sketch geometry to splines," another frequently requested feature. In the conversion case, the target is an external path, whereas with Simplify, the spline would be approximating itself.

3 Comments
SolubleSpork
Advocate

Great idea.  I'm in the same boat as you, not sure about the best way to integrate this but the idea of a slider that can do more or less "smoothing" to a spline is a great idea.  Perhaps it fixes the end points of the spline and you can even select other spline points to force in constant position, while the slider adjusts a balance of fit accuracy to simplicity.

Anonymous
Not applicable

Perhaps a "maximum distance from current points" tolerance could be specified. Along with a choice of forcing it to one side or the other, or both. 

Anonymous
Not applicable

top idea!!! other 3d programs already feature this. like rhino ...

Can't find what you're looking for? Ask the community or share your knowledge.

Submit Idea  

Autodesk Design & Make Report