Issue:
Previously the `AppendBezpath::append_bezpath()` method didn't append the elements after the first `ClosePath` element in the given BezPath, but the Bezpath can contain more than one path. The 'Solidify Stroke' node creates at least two paths, but the `append_bezpath` method only appends the first path, and hence 'Solidify Stroke' didn't work correctly.
Fix:
Now `AppendBezpath::append_bezpath()` appends all the paths in the given BezPath, which also fixes the 'Solidify Stroke' node.
* copy and refactor spline algorithm from Bezier-rs
* add comments
* refactor spline node
* fix spline when path is closed
* use refactored version of spline algorithm
* revert changes to 'Spline' node funtion
* use manipulator groups instead of bezpath
* Fix comment
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Avoid allocating a Vec when precomputed segments lengths is provided.
* improved using option type.
* we don't even need option type as Vec::new() doesn't allocate.
* clean up
* fix naming
* refactor sample_points node/function.
* avoid recalculating segments length to find point on bezpath.
* cleanup
* rename few variables
* fix transformation and use precomputed segment lengths
* write comments
* set POSITION_ACCURACY and PERIMETER_ACCURACY to smaller value to get better approximate euclidean position on a path
* fix segment index when t value is 1.0
* Improve comments
* move sampling points code into a separate function
* it works! finding the segment index is linear now!
* small fix and improve variable names & comment
* Naming
* evaluate segment at t as euclidean distance. fix.
* improve comment & variable name
---------
Co-authored-by: indierusty <priyaayadav@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>