Open be5invis opened 9 years ago
Good point, I forgot I hadn't ported Catmull-Rom to bezier.js yet.
@Pomax just in case this might be useful https://github.com/soswow/fit-curves
no really need (although thanks for the suggestion): they're already written up in http://pomax.github.io/bezierinfo/#catmullconv, just haven't had time to move them into bezier.js, too. https://github.com/Pomax/bezierjs/tree/gh-pages/test/autodraw makes use of the concept already, but in its own file. We're not working with rational B-splines, but plain Bezier curves, so we can just do a straight up Catmull-Rom fit and then trivially convert so that each segment uses Bezier instead of CR coordinates.
I think you're talking of different types of curve-fitting here: @soswow's link is to a port of Philip J. Schneider's algorithm that tries to put as few curves as possible through a list of points with an allowed maximum error. We have this same algorithm in Paper.js too (with some added tweaks), exposed through Path#simplify()
: https://github.com/paperjs/paper.js/blob/develop/src/path/PathFitter.js
You can see the code in action here: http://paperjs.org/examples/path-simplification/
The fitting of catmull-rom splines is what we offer under Path#smooth()
: It creates a smooth path by adjusting the handles of the curves using different methods (catmull-rom being one of them), but without changing the amounts of segments / curves in a path.
Both approaches are useful in different situations, e.g. curve-fitting can be used to process the point data received from a pointing device.
my bad, thanks for the correction.
I think you're talking of different types of curve-fitting here: @soswow's link is to a port of Philip J. Schneider's algorithm that tries to put as few curves as possible through a list of points with an allowed maximum error. We have this same algorithm in Paper.js too (with some added tweaks), exposed through Path#simplify(): https://github.com/paperjs/paper.js/blob/develop/src/path/PathFitter.js You can see the code in action here: http://paperjs.org/examples/path-simplification/
Simplifying is in https://github.com/Pomax/bezierjs/issues/26
A function constructs quadratic/cubic/poly bezier curve through points given would be useful. Nicer if we can specify tangent direction of start and end points.