├── .clang-format ├── .github └── workflows │ └── build.yml ├── .gitignore ├── CMakeLists.txt ├── LICENSE ├── README.md ├── cmake ├── CPM.cmake ├── Catch2.cmake ├── Eigen3.cmake ├── MshIO.cmake └── sanitizer-cmake.cmake ├── include └── nanospline │ ├── BSpline.h │ ├── BSplineBase.h │ ├── BSplinePatch.h │ ├── Bezier.h │ ├── BezierBase.h │ ├── BezierPatch.h │ ├── BezierSimplex.h │ ├── Circle.h │ ├── Cone.h │ ├── CurveBase.h │ ├── Cylinder.h │ ├── Ellipse.h │ ├── Exceptions.h │ ├── ExtrusionPatch.h │ ├── Line.h │ ├── NURBS.h │ ├── NURBSPatch.h │ ├── OffsetPatch.h │ ├── PatchBase.h │ ├── Plane.h │ ├── PolynomialRootFinder.h │ ├── Quadrature.h │ ├── RationalBezier.h │ ├── RationalBezierPatch.h │ ├── RevolutionPatch.h │ ├── SimplexBase.h │ ├── Sphere.h │ ├── Torus.h │ ├── VectorExport.h │ ├── arc_length.h │ ├── conversion.h │ ├── enums.h │ ├── forward_declaration.h │ ├── forward_declaration_inflection.h │ ├── forward_declaration_match_tangent.h │ ├── forward_declaration_singularity.h │ ├── hodograph.h │ ├── internal │ ├── auto_inflection_Bezier.h │ ├── auto_inflection_RationalBezier.h │ ├── auto_match_tangent_Bezier.h │ ├── auto_match_tangent_RationalBezier.h │ ├── auto_singularity_Bezier.h │ └── auto_singularity_RationalBezier.h │ ├── intersect.h │ ├── load_msh.h │ ├── nanospline.h │ ├── sample.h │ ├── save_msh.h │ ├── save_obj.h │ ├── save_svg.h │ └── split.h ├── scripts ├── inflection.py ├── optimal_turning_angle.py ├── singularity.py └── utils.py ├── src ├── forward_declaration_inflection.cpp ├── forward_declaration_match_tangent.cpp └── forward_declaration_singularity.cpp └── tests ├── test_BSpline.cpp ├── test_BSplinePatch.cpp ├── test_Bezier.cpp ├── test_BezierPatch.cpp ├── test_BezierSimplex.cpp ├── test_Circle.cpp ├── test_Cone.cpp ├── test_Cylinder.cpp ├── test_Ellipse.cpp ├── test_ExtrusionPatch.cpp ├── test_Line.cpp ├── test_NURBS.cpp ├── test_NURBSPatch.cpp ├── test_OffsetPatch.cpp ├── test_Plane.cpp ├── test_RationalBezier.cpp ├── test_RationalBezierPatch.cpp ├── test_RevolutionPatch.cpp ├── test_Sphere.cpp ├── test_Torus.cpp ├── test_arc_length.cpp ├── test_conversion.cpp ├── test_fitting.cpp ├── test_hodograph.cpp ├── test_inflection.cpp ├── test_intersect.cpp ├── test_io.cpp ├── test_sample.cpp ├── test_split.cpp └── validation_utils.h /.clang-format: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/.clang-format -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/.github/workflows/build.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *build*/ 2 | bin* 3 | *.code-workspace 4 | *.pyc 5 | .idea* 6 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/CMakeLists.txt -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/README.md -------------------------------------------------------------------------------- /cmake/CPM.cmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/cmake/CPM.cmake -------------------------------------------------------------------------------- /cmake/Catch2.cmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/cmake/Catch2.cmake -------------------------------------------------------------------------------- /cmake/Eigen3.cmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/cmake/Eigen3.cmake -------------------------------------------------------------------------------- /cmake/MshIO.cmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/cmake/MshIO.cmake -------------------------------------------------------------------------------- /cmake/sanitizer-cmake.cmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/cmake/sanitizer-cmake.cmake -------------------------------------------------------------------------------- /include/nanospline/BSpline.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/BSpline.h -------------------------------------------------------------------------------- /include/nanospline/BSplineBase.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/BSplineBase.h -------------------------------------------------------------------------------- /include/nanospline/BSplinePatch.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/BSplinePatch.h -------------------------------------------------------------------------------- /include/nanospline/Bezier.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Bezier.h -------------------------------------------------------------------------------- /include/nanospline/BezierBase.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/BezierBase.h -------------------------------------------------------------------------------- /include/nanospline/BezierPatch.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/BezierPatch.h -------------------------------------------------------------------------------- /include/nanospline/BezierSimplex.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/BezierSimplex.h -------------------------------------------------------------------------------- /include/nanospline/Circle.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Circle.h -------------------------------------------------------------------------------- /include/nanospline/Cone.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Cone.h -------------------------------------------------------------------------------- /include/nanospline/CurveBase.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/CurveBase.h -------------------------------------------------------------------------------- /include/nanospline/Cylinder.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Cylinder.h -------------------------------------------------------------------------------- /include/nanospline/Ellipse.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Ellipse.h -------------------------------------------------------------------------------- /include/nanospline/Exceptions.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Exceptions.h -------------------------------------------------------------------------------- /include/nanospline/ExtrusionPatch.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/ExtrusionPatch.h -------------------------------------------------------------------------------- /include/nanospline/Line.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Line.h -------------------------------------------------------------------------------- /include/nanospline/NURBS.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/NURBS.h -------------------------------------------------------------------------------- /include/nanospline/NURBSPatch.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/NURBSPatch.h -------------------------------------------------------------------------------- /include/nanospline/OffsetPatch.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/OffsetPatch.h -------------------------------------------------------------------------------- /include/nanospline/PatchBase.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/PatchBase.h -------------------------------------------------------------------------------- /include/nanospline/Plane.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Plane.h -------------------------------------------------------------------------------- /include/nanospline/PolynomialRootFinder.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/PolynomialRootFinder.h -------------------------------------------------------------------------------- /include/nanospline/Quadrature.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Quadrature.h -------------------------------------------------------------------------------- /include/nanospline/RationalBezier.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/RationalBezier.h -------------------------------------------------------------------------------- /include/nanospline/RationalBezierPatch.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/RationalBezierPatch.h -------------------------------------------------------------------------------- /include/nanospline/RevolutionPatch.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/RevolutionPatch.h -------------------------------------------------------------------------------- /include/nanospline/SimplexBase.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/SimplexBase.h -------------------------------------------------------------------------------- /include/nanospline/Sphere.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Sphere.h -------------------------------------------------------------------------------- /include/nanospline/Torus.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/Torus.h -------------------------------------------------------------------------------- /include/nanospline/VectorExport.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/VectorExport.h -------------------------------------------------------------------------------- /include/nanospline/arc_length.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/arc_length.h -------------------------------------------------------------------------------- /include/nanospline/conversion.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/conversion.h -------------------------------------------------------------------------------- /include/nanospline/enums.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/enums.h -------------------------------------------------------------------------------- /include/nanospline/forward_declaration.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/forward_declaration.h -------------------------------------------------------------------------------- /include/nanospline/forward_declaration_inflection.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/forward_declaration_inflection.h -------------------------------------------------------------------------------- /include/nanospline/forward_declaration_match_tangent.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/forward_declaration_match_tangent.h -------------------------------------------------------------------------------- /include/nanospline/forward_declaration_singularity.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/forward_declaration_singularity.h -------------------------------------------------------------------------------- /include/nanospline/hodograph.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/hodograph.h -------------------------------------------------------------------------------- /include/nanospline/internal/auto_inflection_Bezier.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/internal/auto_inflection_Bezier.h -------------------------------------------------------------------------------- /include/nanospline/internal/auto_inflection_RationalBezier.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/internal/auto_inflection_RationalBezier.h -------------------------------------------------------------------------------- /include/nanospline/internal/auto_match_tangent_Bezier.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/internal/auto_match_tangent_Bezier.h -------------------------------------------------------------------------------- /include/nanospline/internal/auto_match_tangent_RationalBezier.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/internal/auto_match_tangent_RationalBezier.h -------------------------------------------------------------------------------- /include/nanospline/internal/auto_singularity_Bezier.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/internal/auto_singularity_Bezier.h -------------------------------------------------------------------------------- /include/nanospline/internal/auto_singularity_RationalBezier.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/internal/auto_singularity_RationalBezier.h -------------------------------------------------------------------------------- /include/nanospline/intersect.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/intersect.h -------------------------------------------------------------------------------- /include/nanospline/load_msh.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/load_msh.h -------------------------------------------------------------------------------- /include/nanospline/nanospline.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/nanospline.h -------------------------------------------------------------------------------- /include/nanospline/sample.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/sample.h -------------------------------------------------------------------------------- /include/nanospline/save_msh.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/save_msh.h -------------------------------------------------------------------------------- /include/nanospline/save_obj.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/save_obj.h -------------------------------------------------------------------------------- /include/nanospline/save_svg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/save_svg.h -------------------------------------------------------------------------------- /include/nanospline/split.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/include/nanospline/split.h -------------------------------------------------------------------------------- /scripts/inflection.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/scripts/inflection.py -------------------------------------------------------------------------------- /scripts/optimal_turning_angle.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/scripts/optimal_turning_angle.py -------------------------------------------------------------------------------- /scripts/singularity.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/scripts/singularity.py -------------------------------------------------------------------------------- /scripts/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/scripts/utils.py -------------------------------------------------------------------------------- /src/forward_declaration_inflection.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/src/forward_declaration_inflection.cpp -------------------------------------------------------------------------------- /src/forward_declaration_match_tangent.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/src/forward_declaration_match_tangent.cpp -------------------------------------------------------------------------------- /src/forward_declaration_singularity.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/src/forward_declaration_singularity.cpp -------------------------------------------------------------------------------- /tests/test_BSpline.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_BSpline.cpp -------------------------------------------------------------------------------- /tests/test_BSplinePatch.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_BSplinePatch.cpp -------------------------------------------------------------------------------- /tests/test_Bezier.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_Bezier.cpp -------------------------------------------------------------------------------- /tests/test_BezierPatch.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_BezierPatch.cpp -------------------------------------------------------------------------------- /tests/test_BezierSimplex.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_BezierSimplex.cpp -------------------------------------------------------------------------------- /tests/test_Circle.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_Circle.cpp -------------------------------------------------------------------------------- /tests/test_Cone.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_Cone.cpp -------------------------------------------------------------------------------- /tests/test_Cylinder.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_Cylinder.cpp -------------------------------------------------------------------------------- /tests/test_Ellipse.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_Ellipse.cpp -------------------------------------------------------------------------------- /tests/test_ExtrusionPatch.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_ExtrusionPatch.cpp -------------------------------------------------------------------------------- /tests/test_Line.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_Line.cpp -------------------------------------------------------------------------------- /tests/test_NURBS.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_NURBS.cpp -------------------------------------------------------------------------------- /tests/test_NURBSPatch.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_NURBSPatch.cpp -------------------------------------------------------------------------------- /tests/test_OffsetPatch.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_OffsetPatch.cpp -------------------------------------------------------------------------------- /tests/test_Plane.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_Plane.cpp -------------------------------------------------------------------------------- /tests/test_RationalBezier.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_RationalBezier.cpp -------------------------------------------------------------------------------- /tests/test_RationalBezierPatch.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_RationalBezierPatch.cpp -------------------------------------------------------------------------------- /tests/test_RevolutionPatch.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_RevolutionPatch.cpp -------------------------------------------------------------------------------- /tests/test_Sphere.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_Sphere.cpp -------------------------------------------------------------------------------- /tests/test_Torus.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_Torus.cpp -------------------------------------------------------------------------------- /tests/test_arc_length.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_arc_length.cpp -------------------------------------------------------------------------------- /tests/test_conversion.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_conversion.cpp -------------------------------------------------------------------------------- /tests/test_fitting.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_fitting.cpp -------------------------------------------------------------------------------- /tests/test_hodograph.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_hodograph.cpp -------------------------------------------------------------------------------- /tests/test_inflection.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_inflection.cpp -------------------------------------------------------------------------------- /tests/test_intersect.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_intersect.cpp -------------------------------------------------------------------------------- /tests/test_io.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_io.cpp -------------------------------------------------------------------------------- /tests/test_sample.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_sample.cpp -------------------------------------------------------------------------------- /tests/test_split.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/test_split.cpp -------------------------------------------------------------------------------- /tests/validation_utils.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qnzhou/nanospline/HEAD/tests/validation_utils.h --------------------------------------------------------------------------------