* fix lerping the target paths to the point at the end of path instead of the start.
* comment
* append a MoveTo element first if the bezpath is empty
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* impl path length node
* test 'Path Length' node implementation
* improve test
* impl 'Count' node to return the number of instance in a VectorDataTable instances
* impl 'Split Path' node
* don't split if t is close of 0 or 1 or the bezpath is empty
* write comments
* preserve the style on vector data in 'Split Path' node implementation
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
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>