* initial attempt for area node
* allow node preview for more types
* make AreaNode sync and add CentroidNode
* cargo fmt
* preview of DVec2
* make the nodes async again
* use segment domain instead of region domain
* modify the check for linearity
* create a limit for area in centroid calculation
* cargo fmt
* reverse unnecessary changes
* add threshold to area calculation too.
* handle zero area edge case
* add todo comment
* implement 1D centroid and use it as fallback
* formatting floats to skip last zero
* add Centroid Type radio button to Centroid Node
* rename docs to use area and perimeter centroid
* add web demos for perimeter centroid
* add tests for perimeter centroid
* add fallback to use average of points
* Fix for broken area
* missing fixes
* Code review and rename Perimeter Centroid to Length Centroid
* Use dummy footprint in Area and Centroid nodes
* add doc and todo to clarify when `is_linear` fails
* use epsilon instead of zero
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* A few minor lints and docs
* Added required packages to compile on Debian-style linux
* Inlined some format args, and removed some `&` in args (they cause about 6% slowdown that compiler cannot inline)
* a few spelling mistakes
* fix fmt
* Added subpath offset
* Enhanced offset to produce smooth curves
* Lots of outline bugfixes
* Fixed failing unit tests
* Added subpath outline
* Refactor bezier offset and outline to return Subpaths
* Fix outline bug due to smooth joining and removed reduce optimization that causes jumping approximations
* Bugfix when subpath angle is acute but doesn't intersect
* Stylistic changes per review
* Stylistic changes per review and updated doc comments
---------
Co-authored-by: Hannah Li <hannahli2010@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* add slider to subpath component + change evaluate to take an enum
Co-authored-by: Rob Nadal <RobNadal@users.noreply.github.com>
wip - add intersect to subpath, TODO fix bug
Co-authored-by: Rob Nadal <RobNadal@users.noreply.github.com>
add unit tests to subpath intersections
stress, testing
Co-authored-by: Hannah Li <hannahli2010@gmail.com>
* add parametric eval impl to subpath
* add line intersection to subpath
* Uncomment and #[ignore] disabled tests
* Reorder a few imports
* change subpath:eval slider to radio button
* fixed bug with solve_cubic, fixed unit tests, improved intersection accuracy
* fix failing test
Co-authored-by: Hannah Li <hannahli2010@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Implement offset and reverse
Co-authored-by: Rob Nadal <robnadal44@gmail.com>
* Initial work on graduated outline
Co-authored-by: Rob Nadal <robnadal44@gmail.com>
* Handle linear case for graduated scale
* Added skewed outline, fixed graduated scale hourglass bug
* Removed test code
* Update comments
* Fix linting issue
* Improve comments
* Comment fixes
Co-authored-by: Hannah Li <hannahli2010@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Add function to rotate around a point
* Update svg
* Improve rotation line-to-center styling
* Add second angle of lines
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Convert rotate demo to svg
* Fix bugs in rotate
* Fix bugs in rotate
* Draft of decasteljau to svg
* fixed de casteljau points to_svg impl
* clean up wasm impl for de casteljau points
* Use svg format in wasm for arcs
* Update app.vue
* Fix arcs as svg
Co-authored-by: Linda Zheng <ll2zheng@uwaterloo.ca>
* Remove comments
* Reduce code duplication
Co-authored-by: Thomas Cheng <contact.chengthomas@gmail.com>
Co-authored-by: Hannah Li <hannahli2010@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Convert constructor to use svg
* Convert the through_points functions to svg
* Convert length, lut, derivative, and tangent from canvas to svg
* Fixed bug when t1 == t2 in split
* Converted split and trim to use svg representation, and swapped slider options default to use quadratic options
* Convert normal and curvature to use svg representation in bezier-rs-demos
* Convert the project function to use svg representation in bezier-rs-demos
* Convert the local_extrema, bbox, and inflections to use svgs
* Add text offset constants
* Fix typo
Co-authored-by: Robert Nadal <Robnadal44@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Change Bezier to_svg to include handles and endpoints
* Move params into brackets of format macro, remove unused comment
* Use write macro instead of format
* Fix path for watched directory
* Refactor functions to remove ToSVGOptions