trimkit 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- trimkit-0.1.0/.gitattributes +4 -0
- trimkit-0.1.0/.gitignore +23 -0
- trimkit-0.1.0/LICENSE +24 -0
- trimkit-0.1.0/PKG-INFO +365 -0
- trimkit-0.1.0/README.md +329 -0
- trimkit-0.1.0/bench/collision/results/convex_accuracy.md +9 -0
- trimkit-0.1.0/bench/collision/results/cull.md +54 -0
- trimkit-0.1.0/bench/collision/results/no_cull.md +40 -0
- trimkit-0.1.0/bench/collision/trimkit_robot.py +142 -0
- trimkit-0.1.0/bench/collision/versus_robots.py +68 -0
- trimkit-0.1.0/bench/compare.py +521 -0
- trimkit-0.1.0/bench/run.py +255 -0
- trimkit-0.1.0/bench/scene.py +161 -0
- trimkit-0.1.0/bench/versus.py +194 -0
- trimkit-0.1.0/docker/Dockerfile +57 -0
- trimkit-0.1.0/docker/Dockerfile.dockerignore +4 -0
- trimkit-0.1.0/docs/trace.md +506 -0
- trimkit-0.1.0/examples/ur10.py +224 -0
- trimkit-0.1.0/fuzz/atheris_bindings.py +290 -0
- trimkit-0.1.0/fuzz/bvh.cpp +121 -0
- trimkit-0.1.0/fuzz/collision.cpp +206 -0
- trimkit-0.1.0/fuzz/draco.cpp +54 -0
- trimkit-0.1.0/fuzz/draco_roundtrip.cpp +103 -0
- trimkit-0.1.0/fuzz/draco_seeds.cpp +43 -0
- trimkit-0.1.0/fuzz/earcut.cpp +130 -0
- trimkit-0.1.0/fuzz/meshoptimizer.cpp +92 -0
- trimkit-0.1.0/fuzz/parallel.cpp +150 -0
- trimkit-0.1.0/fuzz/svgpath.cpp +123 -0
- trimkit-0.1.0/fuzz/svgpath_format.cpp +110 -0
- trimkit-0.1.0/fuzz/vhacd.cpp +40 -0
- trimkit-0.1.0/fuzz/vulkan.cpp +97 -0
- trimkit-0.1.0/fuzz/xatlas.cpp +62 -0
- trimkit-0.1.0/pyproject.toml +159 -0
- trimkit-0.1.0/scripts/__main__.py +895 -0
- trimkit-0.1.0/scripts/api.py +190 -0
- trimkit-0.1.0/scripts/backend.py +201 -0
- trimkit-0.1.0/scripts/builder.py +1032 -0
- trimkit-0.1.0/scripts/check_wheel.py +72 -0
- trimkit-0.1.0/scripts/clang-format.yaml +20 -0
- trimkit-0.1.0/scripts/clang-tidy.yaml +56 -0
- trimkit-0.1.0/scripts/distro.py +362 -0
- trimkit-0.1.0/scripts/licenses.py +157 -0
- trimkit-0.1.0/scripts/pgo.py +58 -0
- trimkit-0.1.0/scripts/vendor.py +398 -0
- trimkit-0.1.0/src/bvh.cpp +1156 -0
- trimkit-0.1.0/src/cgroup.hpp +115 -0
- trimkit-0.1.0/src/collision.cpp +757 -0
- trimkit-0.1.0/src/common.hpp +488 -0
- trimkit-0.1.0/src/config/coal/boost/assert.hpp +11 -0
- trimkit-0.1.0/src/config/coal/boost/math/constants/constants.hpp +16 -0
- trimkit-0.1.0/src/config/coal/coal/config.hh +10 -0
- trimkit-0.1.0/src/config/coal/coal/deprecated.hh +9 -0
- trimkit-0.1.0/src/config/coal/coal/tracy.hh +8 -0
- trimkit-0.1.0/src/config/coal/coal/warning.hh +5 -0
- trimkit-0.1.0/src/config/draco/draco_features.h +12 -0
- trimkit-0.1.0/src/draco.cpp +418 -0
- trimkit-0.1.0/src/earcut.cpp +130 -0
- trimkit-0.1.0/src/extension.map +3 -0
- trimkit-0.1.0/src/meshoptimizer.cpp +142 -0
- trimkit-0.1.0/src/numpy.hpp +781 -0
- trimkit-0.1.0/src/parallel.hpp +585 -0
- trimkit-0.1.0/src/svg.cpp +183 -0
- trimkit-0.1.0/src/svgpath.hpp +787 -0
- trimkit-0.1.0/src/tinybvh.cpp +3 -0
- trimkit-0.1.0/src/trimkit/__init__.pyi +619 -0
- trimkit-0.1.0/src/trimkit/exchange.pyi +246 -0
- trimkit-0.1.0/src/trimkit/py.typed +0 -0
- trimkit-0.1.0/src/trimkit.cpp +270 -0
- trimkit-0.1.0/src/vhacd.cpp +179 -0
- trimkit-0.1.0/src/vulkan/layout.comp +139 -0
- trimkit-0.1.0/src/vulkan/scene.hpp +299 -0
- trimkit-0.1.0/src/vulkan/spirv.hpp +3076 -0
- trimkit-0.1.0/src/vulkan/trace.comp +828 -0
- trimkit-0.1.0/src/vulkan/vulkan.hpp +1137 -0
- trimkit-0.1.0/src/windows.hpp +37 -0
- trimkit-0.1.0/src/xatlas.cpp +138 -0
- trimkit-0.1.0/tests/conftest.py +25 -0
- trimkit-0.1.0/tests/golden.json +202 -0
- trimkit-0.1.0/tests/helpers.py +549 -0
- trimkit-0.1.0/tests/memory_limit.py +83 -0
- trimkit-0.1.0/tests/models/cycloidal.npz +0 -0
- trimkit-0.1.0/tests/svg_reference.py +197 -0
- trimkit-0.1.0/tests/test_bvh.py +800 -0
- trimkit-0.1.0/tests/test_collision.py +419 -0
- trimkit-0.1.0/tests/test_draco.py +250 -0
- trimkit-0.1.0/tests/test_earcut.py +237 -0
- trimkit-0.1.0/tests/test_golden.py +167 -0
- trimkit-0.1.0/tests/test_gpu.py +626 -0
- trimkit-0.1.0/tests/test_invariants.py +889 -0
- trimkit-0.1.0/tests/test_meshoptimizer.py +90 -0
- trimkit-0.1.0/tests/test_scheduler.py +608 -0
- trimkit-0.1.0/tests/test_svg.py +397 -0
- trimkit-0.1.0/tests/test_svg_grammar.py +264 -0
- trimkit-0.1.0/tests/test_threads.py +168 -0
- trimkit-0.1.0/tests/test_vhacd.py +106 -0
- trimkit-0.1.0/tests/test_xatlas.py +72 -0
- trimkit-0.1.0/trimkit.toml +304 -0
- trimkit-0.1.0/uv.lock +1104 -0
- trimkit-0.1.0/vendor/coal/LICENSE +34 -0
- trimkit-0.1.0/vendor/coal/include/coal/BV/AABB.h +271 -0
- trimkit-0.1.0/vendor/coal/include/coal/BV/BV.h +304 -0
- trimkit-0.1.0/vendor/coal/include/coal/BV/BV_node.h +169 -0
- trimkit-0.1.0/vendor/coal/include/coal/BV/OBB.h +164 -0
- trimkit-0.1.0/vendor/coal/include/coal/BV/OBBRSS.h +174 -0
- trimkit-0.1.0/vendor/coal/include/coal/BV/RSS.h +187 -0
- trimkit-0.1.0/vendor/coal/include/coal/BV/kDOP.h +193 -0
- trimkit-0.1.0/vendor/coal/include/coal/BV/kIOS.h +203 -0
- trimkit-0.1.0/vendor/coal/include/coal/BVH/BVH_front.h +76 -0
- trimkit-0.1.0/vendor/coal/include/coal/BVH/BVH_internal.h +87 -0
- trimkit-0.1.0/vendor/coal/include/coal/BVH/BVH_model.h +496 -0
- trimkit-0.1.0/vendor/coal/include/coal/BVH/BVH_utility.h +116 -0
- trimkit-0.1.0/vendor/coal/include/coal/alloca.h +86 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/broadphase_callbacks.h +96 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/broadphase_collision_manager.h +165 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/broadphase_dynamic_AABB_tree_array-inl.h +233 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/broadphase_dynamic_AABB_tree_array.h +146 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/detail/hierarchy_tree_array-inl.h +982 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/detail/hierarchy_tree_array.h +300 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/detail/morton-inl.h +151 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/detail/morton.h +120 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/detail/node_base_array-inl.h +65 -0
- trimkit-0.1.0/vendor/coal/include/coal/broadphase/detail/node_base_array.h +75 -0
- trimkit-0.1.0/vendor/coal/include/coal/collision_data.h +1760 -0
- trimkit-0.1.0/vendor/coal/include/coal/collision_object.h +384 -0
- trimkit-0.1.0/vendor/coal/include/coal/collision_utility.h +56 -0
- trimkit-0.1.0/vendor/coal/include/coal/contact_patch/polygon_convex_hull.h +29 -0
- trimkit-0.1.0/vendor/coal/include/coal/data_types.h +299 -0
- trimkit-0.1.0/vendor/coal/include/coal/fwd.hh +172 -0
- trimkit-0.1.0/vendor/coal/include/coal/hfield.h +559 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/BV_fitter.h +220 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/BV_splitter.h +283 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/intersect.h +217 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/intersect.hxx +510 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/shape_shape_func.h +327 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/tools.h +212 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/traversal.h +87 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/traversal_node_base.h +172 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/traversal_node_bvh_shape.h +485 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/traversal_node_bvhs.h +645 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/traversal_node_hfield_shape.h +755 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/traversal_node_setup.h +819 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/traversal_node_shapes.h +124 -0
- trimkit-0.1.0/vendor/coal/include/coal/internal/traversal_recurse.h +364 -0
- trimkit-0.1.0/vendor/coal/include/coal/logging.h +54 -0
- trimkit-0.1.0/vendor/coal/include/coal/math/transform.h +302 -0
- trimkit-0.1.0/vendor/coal/include/coal/narrowphase/gjk.h +475 -0
- trimkit-0.1.0/vendor/coal/include/coal/narrowphase/minkowski_difference.h +186 -0
- trimkit-0.1.0/vendor/coal/include/coal/narrowphase/narrowphase.h +835 -0
- trimkit-0.1.0/vendor/coal/include/coal/narrowphase/narrowphase_defaults.h +65 -0
- trimkit-0.1.0/vendor/coal/include/coal/narrowphase/support_data.h +78 -0
- trimkit-0.1.0/vendor/coal/include/coal/narrowphase/support_functions.h +298 -0
- trimkit-0.1.0/vendor/coal/include/coal/shape/convex.h +170 -0
- trimkit-0.1.0/vendor/coal/include/coal/shape/convex.hxx +322 -0
- trimkit-0.1.0/vendor/coal/include/coal/shape/geometric_shapes.h +1133 -0
- trimkit-0.1.0/vendor/coal/include/coal/shape/geometric_shapes.hxx +234 -0
- trimkit-0.1.0/vendor/coal/include/coal/shape/geometric_shapes_traits.h +158 -0
- trimkit-0.1.0/vendor/coal/include/coal/shape/geometric_shapes_utility.h +309 -0
- trimkit-0.1.0/vendor/coal/include/coal/shared_ptr_comparison.h +56 -0
- trimkit-0.1.0/vendor/coal/include/coal/third_party/boost/core/data.hpp +56 -0
- trimkit-0.1.0/vendor/coal/include/coal/third_party/boost/core/detail/assert.hpp +16 -0
- trimkit-0.1.0/vendor/coal/include/coal/third_party/boost/core/span.hpp +399 -0
- trimkit-0.1.0/vendor/coal/include/coal/timings.h +118 -0
- trimkit-0.1.0/vendor/coal/src/BV/AABB.cpp +194 -0
- trimkit-0.1.0/vendor/coal/src/BV/OBB.cpp +534 -0
- trimkit-0.1.0/vendor/coal/src/BV/OBBRSS.cpp +49 -0
- trimkit-0.1.0/vendor/coal/src/BV/RSS.cpp +1029 -0
- trimkit-0.1.0/vendor/coal/src/BV/kDOP.cpp +244 -0
- trimkit-0.1.0/vendor/coal/src/BV/kIOS.cpp +217 -0
- trimkit-0.1.0/vendor/coal/src/BVH/BVH_model.cpp +1148 -0
- trimkit-0.1.0/vendor/coal/src/BVH/BVH_utility.cpp +676 -0
- trimkit-0.1.0/vendor/coal/src/BVH/BV_fitter.cpp +682 -0
- trimkit-0.1.0/vendor/coal/src/BVH/BV_splitter.cpp +284 -0
- trimkit-0.1.0/vendor/coal/src/broadphase/broadphase_collision_manager.cpp +165 -0
- trimkit-0.1.0/vendor/coal/src/broadphase/broadphase_dynamic_AABB_tree_array.cpp +727 -0
- trimkit-0.1.0/vendor/coal/src/broadphase/detail/morton.cpp +81 -0
- trimkit-0.1.0/vendor/coal/src/collision_data.cpp +51 -0
- trimkit-0.1.0/vendor/coal/src/collision_node.cpp +39 -0
- trimkit-0.1.0/vendor/coal/src/collision_node.h +115 -0
- trimkit-0.1.0/vendor/coal/src/collision_object.cpp +44 -0
- trimkit-0.1.0/vendor/coal/src/collision_utility.cpp +77 -0
- trimkit-0.1.0/vendor/coal/src/contact_patch/polygon_convex_hull.cpp +132 -0
- trimkit-0.1.0/vendor/coal/src/distance/triangle_triangle.cpp +80 -0
- trimkit-0.1.0/vendor/coal/src/hfield.cpp +99 -0
- trimkit-0.1.0/vendor/coal/src/intersect.cpp +432 -0
- trimkit-0.1.0/vendor/coal/src/math/transform.cpp +53 -0
- trimkit-0.1.0/vendor/coal/src/narrowphase/details.h +933 -0
- trimkit-0.1.0/vendor/coal/src/narrowphase/gjk.cpp +1556 -0
- trimkit-0.1.0/vendor/coal/src/narrowphase/minkowski_difference.cpp +362 -0
- trimkit-0.1.0/vendor/coal/src/narrowphase/support_functions.cpp +971 -0
- trimkit-0.1.0/vendor/coal/src/shape/geometric_shapes.cpp +445 -0
- trimkit-0.1.0/vendor/coal/src/shape/geometric_shapes_utility.cpp +1225 -0
- trimkit-0.1.0/vendor/coal/src/traversal/traversal_recurse.cpp +40 -0
- trimkit-0.1.0/vendor/draco/LICENSE +252 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/attribute_octahedron_transform.cc +145 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/attribute_octahedron_transform.h +81 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/attribute_quantization_transform.cc +274 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/attribute_quantization_transform.h +102 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/attribute_transform.cc +41 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/attribute_transform.h +76 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/attribute_transform_data.h +71 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/attribute_transform_type.h +30 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/geometry_attribute.cc +110 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/geometry_attribute.h +569 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/geometry_indices.h +54 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/point_attribute.cc +271 -0
- trimkit-0.1.0/vendor/draco/src/draco/attributes/point_attribute.h +196 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/attributes_decoder.cc +127 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/attributes_decoder.h +97 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/attributes_decoder_interface.h +62 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/attributes_encoder.cc +59 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/attributes_encoder.h +158 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/linear_sequencer.h +51 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/mesh_attribute_indices_encoding_data.h +58 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/normal_compression_utils.h +372 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/points_sequencer.h +63 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h +239 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h +413 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h +34 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h +72 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h +46 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h +46 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h +179 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h +180 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_area.h +117 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_base.h +96 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h +131 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h +133 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_decoder.h +101 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h +111 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h +78 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h +375 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h +318 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h +160 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h +136 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h +284 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h +90 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h +194 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h +60 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h +65 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h +65 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h +69 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h +90 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc +120 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h +142 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h +55 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h +77 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h +85 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h +60 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h +118 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h +116 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h +102 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h +115 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h +90 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h +87 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h +81 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h +120 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoder.cc +118 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoder.h +86 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoders_controller.cc +149 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoders_controller.h +61 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoder.cc +108 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoder.h +134 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoders_controller.cc +171 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoders_controller.h +116 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_decoder.cc +249 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_decoder.h +76 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_encoder.cc +236 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_encoder.h +67 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_decoder.cc +76 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_decoder.h +83 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_encoder.cc +58 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_encoder.h +82 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_decoder.cc +88 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_decoder.h +52 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_encoder.cc +86 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_encoder.h +52 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/bit_coders/rans_bit_decoder.cc +82 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/bit_coders/rans_bit_decoder.h +55 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/bit_coders/rans_bit_encoder.cc +125 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/bit_coders/rans_bit_encoder.h +57 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/config/compression_shared.h +155 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/config/decoder_options.h +34 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/config/draco_options.h +249 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/config/encoder_options.h +101 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/config/encoding_features.h +39 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/decode.cc +135 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/decode.h +80 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/encode_base.h +131 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/ans.h +529 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/rans_symbol_coding.h +53 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/rans_symbol_decoder.h +171 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/rans_symbol_encoder.h +290 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/shannon_entropy.cc +147 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/shannon_entropy.h +110 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/symbol_decoding.cc +181 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/symbol_decoding.h +29 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/symbol_encoding.cc +381 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/entropy/symbol_encoding.h +47 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/expert_encode.cc +327 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/expert_encode.h +167 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_decoder.cc +37 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_decoder.h +68 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder.cc +70 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder.h +54 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.cc +1294 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.h +228 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h +47 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder.cc +194 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder.h +73 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.cc +854 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.h +209 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h +57 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_shared.h +129 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h +201 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h +139 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h +134 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h +172 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h +219 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h +226 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_encoder.cc +34 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_encoder.h +84 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_sequential_decoder.cc +194 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_sequential_decoder.h +40 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_sequential_encoder.cc +128 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/mesh_sequential_encoder.h +56 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/traverser/depth_first_traverser.h +172 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/traverser/max_prediction_degree_traverser.h +226 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/traverser/mesh_attribute_indices_encoding_observer.h +76 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/traverser/mesh_traversal_sequencer.h +113 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/mesh/traverser/traverser_base.h +87 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/point_cloud/point_cloud_decoder.cc +199 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/point_cloud/point_cloud_decoder.h +118 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/point_cloud/point_cloud_encode_stats.h +85 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/point_cloud/point_cloud_encoder.cc +383 -0
- trimkit-0.1.0/vendor/draco/src/draco/compression/point_cloud/point_cloud_encoder.h +198 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/bit_utils.cc +36 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/bit_utils.h +142 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/bounding_box.h +100 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/data_buffer.cc +61 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/data_buffer.h +82 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/decoder_buffer.cc +72 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/decoder_buffer.h +214 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/divide.cc +88 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/divide.h +42 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/draco_index_type.h +184 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/draco_index_type_vector.h +90 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/draco_types.cc +61 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/draco_types.h +52 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/encoder_buffer.cc +93 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/encoder_buffer.h +152 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/hash_utils.cc +58 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/hash_utils.h +64 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/int_utils.h +75 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/macros.h +124 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/math_utils.h +59 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/options.cc +93 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/options.h +151 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/quantization_utils.cc +42 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/quantization_utils.h +82 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/status.cc +44 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/status.h +83 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/status_or.h +81 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/varint_decoding.h +81 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/varint_encoding.h +61 -0
- trimkit-0.1.0/vendor/draco/src/draco/core/vector_d.h +386 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/corner_table.cc +442 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/corner_table.h +397 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/corner_table_iterators.h +309 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/mesh.cc +586 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/mesh.h +504 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/mesh_attribute_corner_table.cc +217 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/mesh_attribute_corner_table.h +202 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/mesh_misc_functions.cc +63 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/mesh_misc_functions.h +105 -0
- trimkit-0.1.0/vendor/draco/src/draco/mesh/valence_cache.h +142 -0
- trimkit-0.1.0/vendor/draco/src/draco/metadata/geometry_metadata.cc +57 -0
- trimkit-0.1.0/vendor/draco/src/draco/metadata/geometry_metadata.h +142 -0
- trimkit-0.1.0/vendor/draco/src/draco/metadata/metadata.cc +140 -0
- trimkit-0.1.0/vendor/draco/src/draco/metadata/metadata.h +209 -0
- trimkit-0.1.0/vendor/draco/src/draco/metadata/metadata_decoder.cc +159 -0
- trimkit-0.1.0/vendor/draco/src/draco/metadata/metadata_decoder.h +42 -0
- trimkit-0.1.0/vendor/draco/src/draco/metadata/metadata_encoder.cc +97 -0
- trimkit-0.1.0/vendor/draco/src/draco/metadata/metadata_encoder.h +41 -0
- trimkit-0.1.0/vendor/draco/src/draco/point_cloud/point_cloud.cc +331 -0
- trimkit-0.1.0/vendor/draco/src/draco/point_cloud/point_cloud.h +312 -0
- trimkit-0.1.0/vendor/dragonbox/LICENSE-Apache2-LLVM +218 -0
- trimkit-0.1.0/vendor/dragonbox/LICENSE-Boost +23 -0
- trimkit-0.1.0/vendor/dragonbox/include/dragonbox/dragonbox.h +4440 -0
- trimkit-0.1.0/vendor/earcut/LICENSE +15 -0
- trimkit-0.1.0/vendor/earcut/include/mapbox/earcut.hpp +1194 -0
- trimkit-0.1.0/vendor/eigen/COPYING.APACHE +203 -0
- trimkit-0.1.0/vendor/eigen/COPYING.BSD +26 -0
- trimkit-0.1.0/vendor/eigen/COPYING.MPL2 +373 -0
- trimkit-0.1.0/vendor/eigen/Eigen/Cholesky +48 -0
- trimkit-0.1.0/vendor/eigen/Eigen/Core +508 -0
- trimkit-0.1.0/vendor/eigen/Eigen/Geometry +64 -0
- trimkit-0.1.0/vendor/eigen/Eigen/Householder +33 -0
- trimkit-0.1.0/vendor/eigen/Eigen/Jacobi +35 -0
- trimkit-0.1.0/vendor/eigen/Eigen/LU +49 -0
- trimkit-0.1.0/vendor/eigen/Eigen/QR +54 -0
- trimkit-0.1.0/vendor/eigen/Eigen/SVD +55 -0
- trimkit-0.1.0/vendor/eigen/Eigen/Version +23 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Cholesky/BunchKaufman.h +1111 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +6 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Cholesky/LDLT.h +868 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Cholesky/LLT.h +677 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/ApproxComparisons.h +614 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +226 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Array.h +380 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/ArrayBase.h +211 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +167 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Assign.h +84 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +1198 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/BandMatrix.h +344 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Block.h +350 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/CommaInitializer.h +149 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/ConcatOp.h +351 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/ConditionEstimator.h +176 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +2088 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/CoreIterators.h +146 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +173 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +944 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/CwiseTernaryOp.h +175 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +97 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +171 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/DenseBase.h +675 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +571 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/DenseStorage.h +563 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/DeviceWrapper.h +155 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Diagonal.h +230 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +794 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +31 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Dot.h +574 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/EigenBase.h +150 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Fill.h +148 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/FindCoeff.h +472 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/GeneralProduct.h +705 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +2073 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +269 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/IO.h +237 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/IndexedView.h +341 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/InnerProduct.h +334 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/InternalHeaderCheck.h +6 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Inverse.h +109 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Map.h +155 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/MapBase.h +284 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/MathFunctions.h +2689 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +309 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Matrix.h +544 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/MatrixBase.h +564 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/MatrixNorms.h +385 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/NestByValue.h +95 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/NoAlias.h +103 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/NumTraits.h +370 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +267 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +860 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +1070 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Predicator.h +638 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Product.h +319 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +2257 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Random.h +208 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/RandomImpl.h +271 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/RankRevealingBase.h +179 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/RealView.h +372 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Redux.h +897 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Ref.h +397 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Replicate.h +132 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Reshaped.h +512 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/ReturnByValue.h +112 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Reverse.h +205 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/SafeScaling.h +704 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/ScaledPermutationMatrix.h +708 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Select.h +93 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +476 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +51 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +469 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Solve.h +169 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/SolveTriangular.h +276 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/SolverBase.h +165 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/StableNorm.h +342 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/StlIterators.h +647 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Stride.h +114 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/StructuredBindings.h +161 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Swap.h +96 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Transpose.h +437 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Transpositions.h +326 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/TriangularInPlace.h +233 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +1198 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/VectorBlock.h +83 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +907 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/Visitor.h +480 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +997 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +147 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathComplex.h +460 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathDoubleWord.h +286 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFrexpLdexp.h +188 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +915 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +362 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathPolynomials.h +153 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathPow.h +1471 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathTrig.h +1098 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +1311 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +48 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +661 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +286 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +50 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +6123 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMathBF16.h +935 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1747 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +59 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +447 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +106 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +2070 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/SSE/Reductions.h +321 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +197 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +181 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +876 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +237 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +150 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/functors/TernaryFunctors.h +54 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1545 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2779 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +1063 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +368 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +849 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +452 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +431 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +406 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +237 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +269 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +479 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +385 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +842 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +125 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/AOCL_Support.h +168 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/Assert.h +159 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/BlasTypes.h +69 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +760 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +748 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/Constants.h +624 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +135 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/EmulateArray.h +254 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +540 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +504 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +283 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/LruCache.h +124 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/MKL_support.h +164 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/Macros.h +1682 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/Memory.h +1740 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/Meta.h +591 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/MoreMeta.h +296 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +44 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +50 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/Serializer.h +210 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/ShapeChecks.h +295 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +109 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +442 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Core/util/XprHelper.h +1251 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +482 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +272 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +236 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +473 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +318 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +6 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +259 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +235 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/Quaternion.h +1014 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +199 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/RotationBase.h +228 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/Scaling.h +198 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/Transform.h +1609 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/Translation.h +205 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/Umeyama.h +168 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +155 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +146 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Householder/Householder.h +402 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +696 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Householder/InternalHeaderCheck.h +6 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +6 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +551 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/LU/Determinant.h +96 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/LU/FullPivLU.h +809 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/LU/InternalHeaderCheck.h +6 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/LU/InverseImpl.h +350 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/LU/PartialPivLU.h +761 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +357 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +555 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +611 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +612 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/QR/HouseholderQR.h +599 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/QR/InternalHeaderCheck.h +6 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/QR/RandColPivHouseholderQR.h +825 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/SVD/BDCSVD.h +651 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/SVD/BDCSVDImpl.h +922 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/SVD/InternalHeaderCheck.h +6 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +1207 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/SVD/SVDBase.h +440 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +370 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +363 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +580 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/plugins/BlockMethods.inc +1380 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +125 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +176 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.inc +193 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +337 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +104 -0
- trimkit-0.1.0/vendor/eigen/Eigen/src/plugins/ReshapedMethods.inc +135 -0
- trimkit-0.1.0/vendor/fast_float/LICENSE-MIT +27 -0
- trimkit-0.1.0/vendor/fast_float/include/fast_float/ascii_number.h +924 -0
- trimkit-0.1.0/vendor/fast_float/include/fast_float/bigint.h +638 -0
- trimkit-0.1.0/vendor/fast_float/include/fast_float/constexpr_feature_detect.h +53 -0
- trimkit-0.1.0/vendor/fast_float/include/fast_float/decimal_to_binary.h +244 -0
- trimkit-0.1.0/vendor/fast_float/include/fast_float/digit_comparison.h +450 -0
- trimkit-0.1.0/vendor/fast_float/include/fast_float/fast_float.h +91 -0
- trimkit-0.1.0/vendor/fast_float/include/fast_float/fast_table.h +708 -0
- trimkit-0.1.0/vendor/fast_float/include/fast_float/float_common.h +1419 -0
- trimkit-0.1.0/vendor/fast_float/include/fast_float/parse_number.h +649 -0
- trimkit-0.1.0/vendor/meshoptimizer/LICENSE.md +21 -0
- trimkit-0.1.0/vendor/meshoptimizer/src/meshoptimizer.h +1724 -0
- trimkit-0.1.0/vendor/meshoptimizer/src/simplifier.cpp +2947 -0
- trimkit-0.1.0/vendor/nanobind/LICENSE +26 -0
- trimkit-0.1.0/vendor/nanobind/cmake/darwin-ld-cpython.sym +1010 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/eigen/dense.h +492 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/eigen/sparse.h +293 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/eigen/tensor.h +332 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/eval.h +69 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/intrusive/counter.h +273 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/intrusive/counter.inl +158 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/intrusive/ref.h +153 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/make_iterator.h +368 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nanobind.h +70 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_accessor.h +347 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_attr.h +356 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_backend.h +715 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_backend_slots.h +593 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_call.h +141 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_cast.h +813 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_class.h +787 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_defs.h +255 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_descr.h +146 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_error.h +189 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_func.h +508 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_misc.h +196 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_platform.h +98 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_python.h +60 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_traits.h +245 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_tuple.h +80 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/nb_types.h +1738 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/ndarray.h +703 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/operators.h +149 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/array.h +22 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/bind_map.h +248 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/bind_vector.h +281 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/chrono.h +312 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/complex.h +55 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/detail/nb_array.h +67 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/detail/nb_dict.h +86 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/detail/nb_list.h +83 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/detail/nb_optional.h +49 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/detail/nb_set.h +89 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/detail/traits.h +92 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/filesystem.h +89 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/function.h +102 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/list.h +22 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/map.h +23 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/optional.h +30 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/pair.h +87 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/set.h +24 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/shared_ptr.h +138 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/string.h +41 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/string_view.h +41 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/tuple.h +103 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/unique_ptr.h +177 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/unordered_map.h +23 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/unordered_set.h +24 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/variant.h +114 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/vector.h +22 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/stl/wstring.h +42 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/trampoline.h +96 -0
- trimkit-0.1.0/vendor/nanobind/include/nanobind/typing.h +36 -0
- trimkit-0.1.0/vendor/nanobind/src/__init__.py +26 -0
- trimkit-0.1.0/vendor/nanobind/src/__main__.py +36 -0
- trimkit-0.1.0/vendor/nanobind/src/buffer.h +166 -0
- trimkit-0.1.0/vendor/nanobind/src/common.cpp +1161 -0
- trimkit-0.1.0/vendor/nanobind/src/error.cpp +288 -0
- trimkit-0.1.0/vendor/nanobind/src/hash.h +33 -0
- trimkit-0.1.0/vendor/nanobind/src/implicit.cpp +57 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_backend.cpp +121 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_combined.cpp +91 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_datetime.cpp +241 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_enum.cpp +433 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_ft.cpp +56 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_ft.h +67 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_func.cpp +1856 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_internals.cpp +1308 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_internals.h +1155 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_ndarray.cpp +1338 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_static_property.cpp +56 -0
- trimkit-0.1.0/vendor/nanobind/src/nb_type.cpp +2742 -0
- trimkit-0.1.0/vendor/nanobind/src/stubgen.py +1760 -0
- trimkit-0.1.0/vendor/nanobind/src/trampoline.cpp +494 -0
- trimkit-0.1.0/vendor/nanobind/src/version.py +169 -0
- trimkit-0.1.0/vendor/patches/coal-bvh-bvh-performance.patch +1694 -0
- trimkit-0.1.0/vendor/patches/draco-symbol-encoding.patch +107 -0
- trimkit-0.1.0/vendor/patches/earcut-convex-ring.patch +81 -0
- trimkit-0.1.0/vendor/patches/earcut-hole-bridge-blocks.patch +158 -0
- trimkit-0.1.0/vendor/patches/tinybvh-flat-node-bins.patch +35 -0
- trimkit-0.1.0/vendor/patches/vhacd-atomic-hull-counter.patch +34 -0
- trimkit-0.1.0/vendor/patches/vhacd-empty-volume.patch +31 -0
- trimkit-0.1.0/vendor/patches/vhacd-parallel-for.patch +252 -0
- trimkit-0.1.0/vendor/patches/xatlas-lost-wakeup.patch +29 -0
- trimkit-0.1.0/vendor/robin_map/LICENSE +21 -0
- trimkit-0.1.0/vendor/robin_map/include/tsl/robin_growth_policy.h +415 -0
- trimkit-0.1.0/vendor/robin_map/include/tsl/robin_hash.h +1589 -0
- trimkit-0.1.0/vendor/robin_map/include/tsl/robin_map.h +815 -0
- trimkit-0.1.0/vendor/robin_map/include/tsl/robin_set.h +668 -0
- trimkit-0.1.0/vendor/tinybvh/LICENSE +21 -0
- trimkit-0.1.0/vendor/tinybvh/tiny_bvh.h +419 -0
- trimkit-0.1.0/vendor/tinybvh/tiny_bvh_base.h +8859 -0
- trimkit-0.1.0/vendor/vhacd/LICENSE +29 -0
- trimkit-0.1.0/vendor/vhacd/include/VHACD.h +8318 -0
- trimkit-0.1.0/vendor/vulkan_headers/LICENSE.md +19 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_av1std.h +397 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_av1std_decode.h +111 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_av1std_encode.h +145 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h264std.h +317 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h264std_decode.h +79 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h264std_encode.h +149 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h265std.h +449 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h265std_decode.h +69 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h265std_encode.h +159 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_vp9std.h +154 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_vp9std_decode.h +70 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vk_video/vulkan_video_codecs_common.h +36 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vulkan/vk_platform.h +83 -0
- trimkit-0.1.0/vendor/vulkan_headers/include/vulkan/vulkan_core.h +27832 -0
- trimkit-0.1.0/vendor/xatlas/LICENSE +35 -0
- trimkit-0.1.0/vendor/xatlas/source/xatlas/xatlas.cpp +10046 -0
- trimkit-0.1.0/vendor/xatlas/source/xatlas/xatlas.h +269 -0
trimkit-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
.venv/
|
|
2
|
+
build/
|
|
3
|
+
dist/
|
|
4
|
+
wheelhouse/
|
|
5
|
+
__pycache__/
|
|
6
|
+
.pytest_cache/
|
|
7
|
+
.ruff_cache/
|
|
8
|
+
.hypothesis/
|
|
9
|
+
# editor droppings
|
|
10
|
+
\#*\#
|
|
11
|
+
.\#*
|
|
12
|
+
*~
|
|
13
|
+
# local Claude Code settings
|
|
14
|
+
.claude/settings.local.json
|
|
15
|
+
# build products outside build/, and fuzzer and profiler droppings
|
|
16
|
+
*.so
|
|
17
|
+
*.pyd
|
|
18
|
+
*.egg-info/
|
|
19
|
+
crash-*
|
|
20
|
+
oom-*
|
|
21
|
+
timeout-*
|
|
22
|
+
leak-*
|
|
23
|
+
*.profraw
|
trimkit-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Michael Dawson-Haggerty
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
22
|
+
|
|
23
|
+
Vendored third-party code under `vendor/` keeps its own license, see
|
|
24
|
+
`vendor/<name>/LICENSE*` and `trimkit.toml`.
|
trimkit-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: trimkit
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Thin stable-ABI numpy bindings to mature geometry libraries: rays and boxes, collision, triangulation, convex decomposition, UV atlases, simplification, draco and SVG paths.
|
|
5
|
+
Description-Content-Type: text/markdown
|
|
6
|
+
Requires-Python: >=3.12
|
|
7
|
+
License-Expression: MIT AND Apache-2.0 AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR BSL-1.0) AND BSD-3-Clause AND ISC AND (MIT OR Apache-2.0 OR BSL-1.0) AND MPL-2.0
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
License-File: vendor/coal/LICENSE
|
|
10
|
+
License-File: vendor/draco/LICENSE
|
|
11
|
+
License-File: vendor/dragonbox/LICENSE-Apache2-LLVM
|
|
12
|
+
License-File: vendor/dragonbox/LICENSE-Boost
|
|
13
|
+
License-File: vendor/earcut/LICENSE
|
|
14
|
+
License-File: vendor/eigen/COPYING.APACHE
|
|
15
|
+
License-File: vendor/eigen/COPYING.BSD
|
|
16
|
+
License-File: vendor/eigen/COPYING.MPL2
|
|
17
|
+
License-File: vendor/fast_float/LICENSE-MIT
|
|
18
|
+
License-File: vendor/meshoptimizer/LICENSE.md
|
|
19
|
+
License-File: vendor/nanobind/LICENSE
|
|
20
|
+
License-File: vendor/robin_map/LICENSE
|
|
21
|
+
License-File: vendor/tinybvh/LICENSE
|
|
22
|
+
License-File: vendor/vhacd/LICENSE
|
|
23
|
+
License-File: vendor/vulkan_headers/LICENSE.md
|
|
24
|
+
License-File: vendor/xatlas/LICENSE
|
|
25
|
+
Author-email: Michael Dawson-Haggerty <mikedh@kerfed.com>
|
|
26
|
+
Requires-Dist: numpy>=2
|
|
27
|
+
Classifier: Development Status :: 4 - Beta
|
|
28
|
+
Classifier: Intended Audience :: Science/Research
|
|
29
|
+
Classifier: Programming Language :: Python :: 3
|
|
30
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
31
|
+
Classifier: Programming Language :: C++
|
|
32
|
+
Classifier: Topic :: Scientific/Engineering
|
|
33
|
+
Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
|
|
34
|
+
Classifier: Typing :: Typed
|
|
35
|
+
Project-URL: homepage, https://github.com/trimesh/trimkit
|
|
36
|
+
|
|
37
|
+
# trimkit
|
|
38
|
+
|
|
39
|
+
`trimkit` is an experimental packaging effort to make a single MIT-compatible `abi3` package for the stable, lightweight C/C++ [trimesh](https://github.com/mikedh/trimesh) dependencies. This is *not* a mesh library: it is a single "kit" for functional questions a mesh library might ask, that have mature iterative solutions. Hopefully it is easier to maintain and lock down than the previous one-Python-package-per-project. Install with:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
pip install trimkit
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
It's small (~1MB wheels!), fast, and has simple and strict numpy-only interfaces for users who know exactly what they want. The idea is that `f(numpy) -> numpy` interfaces to well proven and mostly unchanging C/C++ implementations are likely to age better than other options. It isn't `trimesh` specific in any way, and the only dependency is `numpy`. Meshes are accepted as numpy arrays of `(n, 3) float64` vertices and `(m, 3) int64` faces.
|
|
46
|
+
|
|
47
|
+
Most of the Python packaging ecosystem churn has finally stabilized into `cibuildwheel`, `nanobind`, and `abi3`, and the geometry implementations used here are also mostly stable. `trimkit` offers lowest common denominator interfaces to [coal](https://github.com/coal-library/coal) for collision detection, [tinybvh](https://github.com/jbikker/tinybvh) for ray checks and AABB queries, [earcut.hpp](https://github.com/mapbox/earcut.hpp) for polygon tessellation, [VHACD](https://github.com/kmammou/v-hacd) for convex decomposition, [meshoptimizer](https://github.com/zeux/meshoptimizer) for mesh simplification, [xatlas](https://github.com/jpcy/xatlas) for UV atlases, [draco](https://github.com/google/draco) for buffer compression, and a hand rolled SVG path string to buffer parser.
|
|
48
|
+
|
|
49
|
+
There's been many bindings to mostly the same underlying implementations of polygon tessellation ([a](https://pypi.org/project/triangle/) [b](https://pypi.org/project/mapbox-earcut/) [c](https://pypi.org/project/earcutx/)), embree ([a](https://github.com/scopatz/pyembree) [b](https://pypi.org/project/pyembree/) [c](https://pypi.org/project/embreex/) [d](https://pypi.org/project/embree/) [e](https://pypi.org/project/raybender/)), FCL ([a](https://pypi.org/project/python-fcl) [b](https://pypi.org/project/fclx/) [c](https://github.com/jf---/python-fcl) [d](https://github.com/benureau/python-fcl)), quadric edge collapse ([a](https://pypi.org/project/open3d/) [b](https://pypi.org/project/fast-simplification/)), VHACD ([a](https://pypi.org/project/pyVHACD/) [b](https://pypi.org/project/vhacdx/)), and draco ([a](https://pypi.org/project/pydracogltf/) [b](https://pypi.org/project/DracoPy/) [c](https://pypi.org/project/dracox/)) over the years. It would be nice to stop having to rotate when a binding stops releasing and there's a new Python to support.
|
|
50
|
+
|
|
51
|
+
Most of the underlying geometry implementations in this package are mature and currently used by `trimesh` with different bindings. New to the pod are `tinybvh`, `coal`, `meshoptimizer`, and the SVG parser. `tinybvh` is the biggest change, and was picked because it looks well written, benchmarks look good, packaging embree has been a continuous source of pain, and it also provides an `rtree` alternative that benchmarks about 10x faster on numpy arrays. `coal` is an actively maintained fork of the flexible collision library (currently used by trimesh as `python-fcl`), that has more accurate convex distances. `meshoptimizer` is well-regarded, and easier to package than `open3d` or `fast-simplification`, small, and it never moves vertices.
|
|
52
|
+
|
|
53
|
+
The weekly GitHub Actions compromise and overall threat environment has made the zoo less attractive to maintain. With half a dozen packages there's half-a-dozen places we might have not pinned something; this is an attempt to lint, fuzz, and lock down in one place.
|
|
54
|
+
|
|
55
|
+
## Packaging
|
|
56
|
+
|
|
57
|
+
This uses a Python script to construct a `ninja` build file from a declarative `TOML` file, and then builds with `clang` and `lld`. Ninja is awesome, and this lets us retire `cmake`. It runs `clang` with profile-guided-optimization, and tries to get everything it can out of performance.
|
|
58
|
+
|
|
59
|
+
This builds `abi3` wheels on `python >= 312`, for Windows, Mac, and Linux. Linux has 4 (`glibc`/`MUSL`,`x86_64`/`aarch64`), Mac has 2 (`x86_64`/`arm`), and Windows has 3 (`x86_64`/`arm`/`x86`), or 9 wheels per release.
|
|
60
|
+
|
|
61
|
+
This releases an `sdist` that is tested on free-threaded builds, and will release `abi3t` wheels when `nanobind` supports it cleanly. As a policy there will never be per-Python releases; this is an `abi3` packaging effort.
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
## API Choices
|
|
65
|
+
|
|
66
|
+
This does not and will never load meshes, parse XML, or support anything that isn't a pure data operation. For example it parses SVG path strings into numpy arrays fast; it does not parse the XML holding the path strings. It sits below `trimesh` or similar libraries in the Python ecosystem.
|
|
67
|
+
|
|
68
|
+
- Functions take numpy arrays, don't play precision games, and are biased toward uniformity: everything comes in and goes out as `float64` or `int64`.
|
|
69
|
+
- Generic names: functions (outside `trimkit.exchange`) are intended to be doors to the question class, not implementation specific. For example VHACD is the convex decomposition algorithm, but the function is called `decompose`. And if someone vibes the perfect header-only convex decomposition algorithm, we would add an `engine: None | EngineKind = None` argument.
|
|
70
|
+
- Honest about work in constructors: why not merge `CollisionScene` and `RayScene`? Well they both have potentially expensive acceleration structures, are different under the hood, and are different classes of question.
|
|
71
|
+
- Scene instancing is per-query, NOT saved in scene state. Rather than the usual stateful "scene.set_instances", queries are `CollisionScene.distances(instance_matrices, instance_index)`. The caller passes instances on every query; the scene holds only the per-mesh acceleration structures.
|
|
72
|
+
|
|
73
|
+
## AI Preferences
|
|
74
|
+
|
|
75
|
+
- The build system, lints, packaging, hardening, optimizing: AI go wild. Generally try to make it faster, smaller, more tested, cleaner.
|
|
76
|
+
- API: never expand without permission.
|
|
77
|
+
- Geometry: these algorithms were mostly written by domain experts and have been run by millions of users. The standard of proof is extremely high for any change. Start with multiple failing tests, an absolutely solid root causea THIN fix that doesn't require new subsystems, and is justified from multiple angles and multiple cases, including performance data. And present the case coherently to a user: do not make changes to this without an explicit go-ahead, with success criteria established before implementing including failing tests; and a plan on how the change is going to be 50 lines or less to hot geometry code.
|
|
78
|
+
|
|
79
|
+
## // Claude Slop
|
|
80
|
+
|
|
81
|
+
Everything below this line is LLM output.
|
|
82
|
+
|
|
83
|
+
Rays and collision against the same meshes, placed the same way: one mesh, two
|
|
84
|
+
instances of it, and every query names where they are.
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
import numpy as np
|
|
88
|
+
import trimkit
|
|
89
|
+
|
|
90
|
+
# a tetrahedron, placed twice: where it is, and moved half a unit along x
|
|
91
|
+
vertices = np.array([[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]], dtype=np.float64)
|
|
92
|
+
faces = np.array([[0, 2, 1], [0, 1, 3], [0, 3, 2], [1, 2, 3]], dtype=np.int64)
|
|
93
|
+
matrices = np.tile(np.eye(4), (2, 1, 1))
|
|
94
|
+
matrices[1, 0, 3] = 0.5
|
|
95
|
+
index = np.zeros(2, dtype=np.int64)
|
|
96
|
+
|
|
97
|
+
origin, direction = np.array([-1.0, 0.2, 0.2]), np.array([1.0, 0.0, 0.0])
|
|
98
|
+
rays = trimkit.RayScene([(vertices, faces)])
|
|
99
|
+
ray, instance, face, distance = rays.intersect(origin, direction, matrices, index)
|
|
100
|
+
solids = trimkit.CollisionScene([(vertices, faces)], convex=True)
|
|
101
|
+
touching = solids.collides(matrices, index)
|
|
102
|
+
distances, points, normals = solids.distances(matrices, index)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
The ray crosses the two tetrahedra four times (`distance` is `[1.0, 1.5, 1.6,
|
|
106
|
+
2.1]`, `instance` `[0, 1, 0, 1]`), the pair touches (`touching` is `[[0, 1]]`),
|
|
107
|
+
and `distances` says how deep, where and along which direction (`-0.29`, with
|
|
108
|
+
the closest points and the unit normal a planner's gradient is made of).
|
|
109
|
+
|
|
110
|
+
<!-- api:start -->
|
|
111
|
+
<!-- generated by `uv run scripts generate` from the docstrings and trimkit.toml: don't edit -->
|
|
112
|
+
|
|
113
|
+
| `trimkit.` | what it is |
|
|
114
|
+
|---|---|
|
|
115
|
+
| `RayScene` | Meshes, each built once into a double precision BVH, and the only thing rays are cast against.<br>`scene = trimkit.RayScene([(vertices, faces)])` |
|
|
116
|
+
| `RayScene.boxes` | The box each instance is culled by, as a query with these instances places it: what the scene thinks it holds.<br>`boxes = trimkit.RayScene([(vertices, faces)]).boxes()` |
|
|
117
|
+
| `RayScene.intersect` | Where each ray crosses the scene's surface, nearest first, from either side.<br>`rays, instances, faces, distances = scene.intersect(origins, directions)` |
|
|
118
|
+
| `RayScene.intersect_any` | Whether each ray hits anything, stopping at the first triangle found.<br>`hits = scene.intersect_any(origins, directions)` |
|
|
119
|
+
| `Boxes` | Axis-aligned boxes built into a BVH for overlap queries: a static, numpy-native replacement for a bulk-loaded R-tree.<br>`tree = trimkit.Boxes(np.array([[[0.0, 0.0], [1.0, 1.0]], [[2.0, 2.0], [3.0, 3.0]]]))` |
|
|
120
|
+
| `Boxes.bounds` | The box around every box.<br>`bounds = tree.bounds` |
|
|
121
|
+
| `Boxes.boxes` | Every box, exactly as given.<br>`boxes = tree.boxes()` |
|
|
122
|
+
| `Boxes.intersect` | Every box overlapping each query box, touching included.<br>`pairs = tree.intersect(np.array([[[0.5, 0.5], [2.5, 2.5]]]))` |
|
|
123
|
+
| `triangulate` | Triangulate a polygon with holes.<br>`vertices, faces = trimkit.triangulate(exterior)` |
|
|
124
|
+
| `decompose` | Decompose a closed triangle mesh into approximately convex hulls.<br>`hulls = trimkit.decompose(vertices, faces, maximum_hulls=1)` |
|
|
125
|
+
| `parametrize` | Cut a mesh into charts and pack them into a UV atlas.<br>`vertex_sources, faces, uv = trimkit.parametrize(vertices, faces)` |
|
|
126
|
+
| `simplify` | Collapse edges by quadric error until at most `face_count` faces remain.<br>`vertices, faces, vertex_sources = trimkit.simplify(vertices, faces, 4)` |
|
|
127
|
+
| `CollisionScene` | Meshes to place and query against each other. A scene never changes: each query names its own instances, so threads may share one.<br>`scene = trimkit.CollisionScene([(vertices, faces)], convex=True)` |
|
|
128
|
+
| `CollisionScene.boxes` | The box each instance is culled by, as a query with these instances places it: what the scene thinks it holds.<br>`boxes = scene.boxes()` |
|
|
129
|
+
| `CollisionScene.collides` | The pairs of instances that touch.<br>`pairs = scene.collides(placed, np.zeros(2, dtype=np.int64))` |
|
|
130
|
+
| `CollisionScene.distances` | The distance between each pair of instances, and where it is.<br>`distances, points, normals = scene.distances(placed, np.zeros(2, dtype=np.int64))` |
|
|
131
|
+
| `__version__` | This package's version.<br>`isinstance(trimkit.__version__, str)` |
|
|
132
|
+
| `Mesh` | A triangle mesh as the scenes take it and `decompose` returns it: a (vertices, faces) pair of (n, 3) float64 vertices and (m, 3) int64 triangle indices into them, given as a tuple, list or any sequence of two.<br>`mesh: trimkit.Mesh = (np.zeros((3, 3)), np.array([[0, 1, 2]], dtype=np.int64))` |
|
|
133
|
+
| `exchange.DracoKind` | What a draco attribute holds, as `draco_encode` takes it.<br>`POSITION, NORMAL, TEXCOORD, COLOR, GENERIC` |
|
|
134
|
+
| `exchange.draco_encode` | Compress a glTF triangle primitive, keeping vertex order.<br>`buffer = trimkit.exchange.draco_encode(faces, [vertices.astype(np.float32)], kinds)` |
|
|
135
|
+
| `exchange.draco_decode` | Decompress a glTF draco buffer, decoding it once.<br>`faces, attributes = trimkit.exchange.draco_decode(buffer, np.array([0], dtype=np.int64))` |
|
|
136
|
+
| `exchange.SvgKind` | What drew an SvgSegment, its `kind` field.<br>`LINE, QUADRATIC, CUBIC, ARC` |
|
|
137
|
+
| `exchange.svg_parse` | Parse SVG path data into vertices and one segment per drawing command.<br>`vertices, segments = trimkit.exchange.svg_parse("M 0 0 L 1 1")` |
|
|
138
|
+
| `exchange.svg_string` | Write vertices and segments back as SVG path data, the inverse of `svg_parse`.<br>`path = trimkit.exchange.svg_string(*trimkit.exchange.svg_parse("M 0 0 L 1 1 Z"))` |
|
|
139
|
+
| `exchange.SvgSegment` | One drawing command of an SVG path, as `svg_parse` returns them and `svg_string` takes them.<br>`trimkit.exchange.svg_parse("M 0 0 L 1 1")[1].dtype == trimkit.exchange.SvgSegment` |
|
|
140
|
+
|
|
141
|
+
| part | upstream | license |
|
|
142
|
+
|---|---|---|
|
|
143
|
+
| `bvh` | [jbikker/tinybvh](https://github.com/jbikker/tinybvh), [KhronosGroup/Vulkan-Headers](https://github.com/KhronosGroup/Vulkan-Headers) | MIT, Apache-2.0 OR MIT |
|
|
144
|
+
| `earcut` | [mapbox/earcut.hpp](https://github.com/mapbox/earcut.hpp) | ISC |
|
|
145
|
+
| `vhacd` | [kmammou/v-hacd](https://github.com/kmammou/v-hacd) | BSD-3-Clause |
|
|
146
|
+
| `xatlas` | [jpcy/xatlas](https://github.com/jpcy/xatlas) | MIT |
|
|
147
|
+
| `draco` | [google/draco](https://github.com/google/draco) | Apache-2.0 |
|
|
148
|
+
| `svg` | [fastfloat/fast_float](https://github.com/fastfloat/fast_float), [jk-jeon/dragonbox](https://github.com/jk-jeon/dragonbox) | MIT OR Apache-2.0 OR BSL-1.0, Apache-2.0 WITH LLVM-exception OR BSL-1.0 |
|
|
149
|
+
| `meshoptimizer` | [zeux/meshoptimizer](https://github.com/zeux/meshoptimizer) | MIT |
|
|
150
|
+
| `collision` | [coal-library/coal](https://github.com/coal-library/coal), [libeigen/eigen](https://gitlab.com/libeigen/eigen) | BSD-3-Clause, MPL-2.0 |
|
|
151
|
+
| every part | [wjakob/nanobind](https://github.com/wjakob/nanobind), [Tessil/robin-map](https://github.com/Tessil/robin-map) | BSD-3-Clause, MIT |
|
|
152
|
+
<!-- api:end -->
|
|
153
|
+
|
|
154
|
+
Each docstring has the full parameters and returns (`help(trimkit.RayScene.intersect)`).
|
|
155
|
+
|
|
156
|
+
Scalar arguments take Python's numbers or numpy's. Every array argument is read in
|
|
157
|
+
place when it is exactly the dtype shown (float64 finite and within ±1e30) and
|
|
158
|
+
C-contiguous, and copied once, as `np.ascontiguousarray` would, in any other layout.
|
|
159
|
+
Another dtype numpy casts safely (float32, int32), or a list, is converted to that
|
|
160
|
+
dtype once with a `UserWarning` naming the argument: the copy is what you would have
|
|
161
|
+
written, and the warning says so. A dtype that would lose values, or anything that
|
|
162
|
+
isn't array-like, is a `TypeError`, and a bad value a `ValueError`, saying what was
|
|
163
|
+
expected. Whatever indexes memory is always copied once and the copy checked: faces,
|
|
164
|
+
into each library's index type, and a query's `instance_index` and `pairs`. Scene
|
|
165
|
+
constructors keep their own copy of their meshes.
|
|
166
|
+
Everything returned is freshly allocated, and the GIL is released while computing.
|
|
167
|
+
Answers are dense when you name the rows (`intersect_any`'s rays, `distances`'
|
|
168
|
+
pairs) and sparse rows of what was found otherwise (hits, touching pairs,
|
|
169
|
+
overlapping boxes), and `decompose` answers a list of `Mesh`, one per hull. Nothing a
|
|
170
|
+
scene answers ever depends on what it was asked before, so threads can share one.
|
|
171
|
+
|
|
172
|
+
`RayScene`, `Boxes` and `CollisionScene` queries spread big batches, and
|
|
173
|
+
`decompose` its hull splits and merge costs, across the cores they may run on
|
|
174
|
+
(their affinity, within a cgroup's CPU quota), on one pool of workers that exit
|
|
175
|
+
after 10 s idle (so a `fork` within that time gets CPython's multi-threaded
|
|
176
|
+
warning); `parametrize` uses xatlas's own threads, and the rest run on the
|
|
177
|
+
calling thread.
|
|
178
|
+
|
|
179
|
+
`RayScene(meshes, use_gpu=True)` traces on a Vulkan device instead: the first
|
|
180
|
+
GPU that computes in double precision, found through the system's Vulkan loader
|
|
181
|
+
at run time (no wheel links or needs Vulkan, and Vulkan 1.0 is enough). It holds
|
|
182
|
+
the same trees and runs a compute shader that makes every decision tinybvh's
|
|
183
|
+
traversal makes, most of them in float32 behind a proven error bound and the
|
|
184
|
+
rest with tinybvh's own float64 operations (`docs/trace.md`), so it answers the
|
|
185
|
+
same bytes the CPU does. Rays go as given: a `(3,)` origin or direction is one
|
|
186
|
+
row for every ray, and an array goes as its dtype: float32 at half the bytes
|
|
187
|
+
of float64, widened on the device. When no such device can be used,
|
|
188
|
+
at construction or later, the scene warns once (a `UserWarning` naming why)
|
|
189
|
+
and the
|
|
190
|
+
CPU answers. `tests/golden.json` holds the hashed answers of an exact corpus
|
|
191
|
+
(dyadic coordinates, integer-length directions, lattice meshes) that every
|
|
192
|
+
platform and the device are checked against: the same answers everywhere.
|
|
193
|
+
|
|
194
|
+
What the device is worth depends on the rays. `python bench/scene.py` times a
|
|
195
|
+
real assembly (`tests/models/cycloidal.npz`: 13 meshes placed 72 times, 377k
|
|
196
|
+
faces) as loaded and pulled apart, so fewer rays hit anything. A batch is one
|
|
197
|
+
camera's rays, one origin for all of them; times are the median over eight
|
|
198
|
+
cameras, in milliseconds a batch, twenty CPU threads against an RTX 3090:
|
|
199
|
+
|
|
200
|
+
| rays | pulled apart | hitting | nearest: CPU ms | device ms | ratio | any hit: CPU ms | device ms | ratio | every crossing: CPU ms | device ms | ratio |
|
|
201
|
+
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
202
|
+
| 10,000 | 1x | 12% | 1.13 | 0.65 | 1.7x | 0.72 | 0.27 | 2.7x | 4.35 | 13.73 | 0.3x |
|
|
203
|
+
| 10,000 | 2x | 11% | 1.01 | 0.59 | 1.7x | 0.65 | 0.30 | 2.1x | 5.11 | 6.83 | 0.7x |
|
|
204
|
+
| 10,000 | 5x | 3% | 0.60 | 0.44 | 1.4x | 0.42 | 0.24 | 1.7x | 0.50 | 1.43 | 0.4x |
|
|
205
|
+
| 99,856 | 1x | 12% | 2.05 | 1.22 | 1.7x | 1.30 | 0.76 | 1.7x | 16.40 | 18.99 | 0.9x |
|
|
206
|
+
| 99,856 | 2x | 11% | 1.79 | 1.22 | 1.5x | 1.03 | 0.92 | 1.1x | 6.89 | 10.22 | 0.7x |
|
|
207
|
+
| 99,856 | 5x | 3% | 1.05 | 1.12 | 0.9x | 0.74 | 0.89 | 0.8x | 1.92 | 3.01 | 0.6x |
|
|
208
|
+
| 1,000,000 | 1x | 12% | 15.42 | 5.81 | 2.7x | 15.50 | 5.17 | 3.0x | 102.86 | 54.31 | 1.9x |
|
|
209
|
+
| 1,000,000 | 2x | 11% | 12.84 | 5.87 | 2.2x | 7.91 | 4.74 | 1.7x | 46.61 | 27.28 | 1.7x |
|
|
210
|
+
| 1,000,000 | 5x | 3% | 7.16 | 5.06 | 1.4x | 5.16 | 4.82 | 1.1x | 12.47 | 10.46 | 1.2x |
|
|
211
|
+
| 4,000,000 | 1x | 12% | 61.71 | 55.58 | 1.1x | 45.36 | 19.69 | 2.3x | 446.58 | 142.95 | 3.1x |
|
|
212
|
+
| 4,000,000 | 2x | 11% | 46.27 | 23.26 | 2.0x | 32.19 | 20.23 | 1.6x | 191.07 | 86.65 | 2.2x |
|
|
213
|
+
| 4,000,000 | 5x | 3% | 34.02 | 20.78 | 1.6x | 24.05 | 20.71 | 1.2x | 49.97 | 34.44 | 1.5x |
|
|
214
|
+
|
|
215
|
+
That run shared the machine with other work (a load of about 10 on its twenty
|
|
216
|
+
threads). Three things hold either way.
|
|
217
|
+
A camera's float64 directions are 24 MB a million rays, and moving them to the
|
|
218
|
+
device (about 0.17 ms a megabyte here, by any route measured, and nearly all
|
|
219
|
+
of a query's time: tracing is a few percent of it) takes about as long as the
|
|
220
|
+
CPU takes to find that most of them miss, so a sparse scene gains least;
|
|
221
|
+
float32 directions go at half that. Every crossing
|
|
222
|
+
runs each ray's crossings one after another on its own lane, so a small batch
|
|
223
|
+
with long rays is slower on the device than on the CPU, and a large one
|
|
224
|
+
faster. And the device's answers are the CPU's, which the bench checks before
|
|
225
|
+
it times anything.
|
|
226
|
+
|
|
227
|
+
The same script times the same assembly as a `CollisionScene`: every pair of
|
|
228
|
+
its 72 instances in one call, as triangle meshes (none of them is closed, so
|
|
229
|
+
none is convex), in milliseconds, the best of five calls:
|
|
230
|
+
|
|
231
|
+
| pulled apart | pairs | touching | `collides` ms | within 1 mm ms | distances within 10 mm ms | every distance ms |
|
|
232
|
+
|---|---|---|---|---|---|---|
|
|
233
|
+
| 1x | 2,556 | 119 | 0.55 | 0.56 | 29.9 | 97 |
|
|
234
|
+
| 2x | 2,556 | 67 | 0.38 | 0.31 | 36.1 | 147 |
|
|
235
|
+
| 5x | 2,556 | 25 | 0.17 | 0.34 | 4.8 | 151 |
|
|
236
|
+
|
|
237
|
+
`collides` culls by each instance's box, then by each mesh's hierarchy, so
|
|
238
|
+
which of 2,556 pairs touch among 377k placed faces is about half a
|
|
239
|
+
millisecond; a margin asks which come within that distance. `distances`
|
|
240
|
+
measures every pair it is asked about, and `upper_bound` lets it stop at pairs
|
|
241
|
+
farther apart than that, which is what a planner asks.
|
|
242
|
+
|
|
243
|
+
### Example
|
|
244
|
+
|
|
245
|
+
`examples/ur10.py`: a UR10e with a box gripper reaches into a cubby
|
|
246
|
+
for a block. The planner is one function, forward kinematics then one
|
|
247
|
+
`CollisionScene.distances` call over every waypoint of a joint-space spline, handed
|
|
248
|
+
to `scipy.optimize.minimize`, its gradient from the normals and closest points
|
|
249
|
+
`distances` returns.
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
planned in 92 ms, 59 evaluations of 101 waypoints
|
|
253
|
+
least clearance over 2001 waypoints: 18.4 mm
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Against what trimesh used before
|
|
257
|
+
|
|
258
|
+
| `trimkit.` | replaces | measured against it |
|
|
259
|
+
|---|---|---|
|
|
260
|
+
| `exchange.svg_parse`, `exchange.svg_string` | `svg.path` | 56x faster parsing 60k commands |
|
|
261
|
+
| `Boxes` | `rtree` | 8-10x faster: build 100k boxes, query 20k |
|
|
262
|
+
| `CollisionScene` | `python-fcl` | 6x faster: every touching pair of 200 spheres, through trimesh's `CollisionManager`; convex distances more accurate |
|
|
263
|
+
| `exchange.draco_encode`, `exchange.draco_decode` | `DracoPy` | 3.6x faster encoding, 1.7x decoding |
|
|
264
|
+
| `RayScene` | `embreex` | 3-3.6x faster on 1M rays, in float64 and watertight |
|
|
265
|
+
| `simplify` | `fast-simplification` | 2.9x faster, and thread safe |
|
|
266
|
+
| `parametrize` | `xatlas` | 1.3x faster |
|
|
267
|
+
| `decompose` | `vhacdx` | the same speed: the same library |
|
|
268
|
+
| `triangulate` | `mapbox-earcut` | the same speed: the same library |
|
|
269
|
+
|
|
270
|
+
Measured 2026-11-06 with `bench/versus.py` on the same numpy inputs: best of several
|
|
271
|
+
runs on 8 cores of a busy machine, release build without PGO. A range is two runs.
|
|
272
|
+
|
|
273
|
+
### Wheels
|
|
274
|
+
|
|
275
|
+
One `cp312-abi3` wheel per platform serves every CPython from 3.12, so a new CPython
|
|
276
|
+
needs no new release: Linux on glibc (`manylinux_2_28`) and musl (`musllinux_1_2`) on
|
|
277
|
+
x86_64 and aarch64, macOS 11+ on x86_64 and arm64, and Windows on x64, x86 and arm64,
|
|
278
|
+
every platform numpy publishes wheels for. 9 wheels and an sdist.
|
|
279
|
+
|
|
280
|
+
Anywhere else the sdist builds with clang 19 or newer and lld: no machine is refused,
|
|
281
|
+
and `-Csystem=eigen,fast_float,robin_map` takes those from the system. That includes
|
|
282
|
+
free-threaded Python, where `uv run scripts sdist` builds and tests it for every release:
|
|
283
|
+
it gets no wheels until nanobind reaches `abi3t` without a second package, as this
|
|
284
|
+
package has no per-version wheels.
|
|
285
|
+
`uv run scripts distro` generates from `trimkit.toml` the `debian/` directory and Fedora
|
|
286
|
+
spec a distribution's maintainer commits, into `build/distro/`.
|
|
287
|
+
|
|
288
|
+
## Development
|
|
289
|
+
|
|
290
|
+
```
|
|
291
|
+
uv run scripts check # the gate: build, tests, static checks, sanitizers, fuzzers
|
|
292
|
+
uv run scripts update # every upstream and dependency to its newest
|
|
293
|
+
uv run scripts format # our C++, as scripts/clang-format.yaml says
|
|
294
|
+
uv run scripts generate # regenerate the shaders' SPIR-V, the stubs, this README's generated block and tests/golden.json
|
|
295
|
+
uv run scripts wheel # this platform's release wheels
|
|
296
|
+
uv run scripts distro # Debian and Fedora packaging (--run: build, test and lint them)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
`check` runs before pushing, and prints each stage's minutes. CI only releases:
|
|
300
|
+
every push to main runs `.github/workflows/release.yml`, which lints, builds and
|
|
301
|
+
tests the sdist and every wheel with these same commands, then publishes the
|
|
302
|
+
version `pyproject.toml` names (one PyPI already has is left as it is). A push to
|
|
303
|
+
`release/*` does all of it but the upload. Everything but `lock` and `wheel` runs
|
|
304
|
+
inside a pinned Debian trixie image (`docker/Dockerfile`), with the sources mounted
|
|
305
|
+
read-only unless the command writes them, so the host needs only Docker and uv.
|
|
306
|
+
|
|
307
|
+
`trimkit.toml` is the one hand-edited build file: every upstream (pin, patches,
|
|
308
|
+
and how it compiles, each deviation with its reason), every part of the one
|
|
309
|
+
extension, its wheel-size budget, and the toolchains a release accepts. There is
|
|
310
|
+
no CMake: a wheel is one shared library from a fixed list of sources, so the
|
|
311
|
+
backend (`scripts/backend.py`) has `scripts/builder.py` write that list as one
|
|
312
|
+
ninja file. To see exactly what a build does, read its `build.ninja`.
|
|
313
|
+
|
|
314
|
+
Every build is LLVM: clang with ThinLTO and PGO, linked by lld with safe
|
|
315
|
+
identical-code folding, or on macOS by Xcode's linker. The builder asks clang for
|
|
316
|
+
its own linker, archiver and `llvm-profdata` and stops unless they are all one
|
|
317
|
+
LLVM, since ThinLTO's bitcode and PGO's profiles are only read by their own.
|
|
318
|
+
`-Cstrict=true`, which the gate and the release use, also stops on a clang newer
|
|
319
|
+
than `[toolchain]` has passed with.
|
|
320
|
+
|
|
321
|
+
## Vendoring
|
|
322
|
+
|
|
323
|
+
`vendor/` holds what a build needs and nothing else, committed, so nothing is
|
|
324
|
+
downloaded to build, and this keeps building if GitHub goes away. One rule picks
|
|
325
|
+
the files, at the upstream's own paths: what `keep` names in `trimkit.toml`, and
|
|
326
|
+
whatever a preprocessor dependency scan of the C++ compiling it reaches on every
|
|
327
|
+
wheel target, where a reached header brings its same-named `sources`. `check`
|
|
328
|
+
rescans, so it can't drift. It's about 10 MB in a checkout, half of it Eigen's
|
|
329
|
+
headers, and 2.3 MB as an sdist.
|
|
330
|
+
|
|
331
|
+
`uv run scripts fetch` re-derives all of it from the pinned commits: `git status
|
|
332
|
+
vendor/` then shows nothing, so anyone can check that `vendor/` is what it says.
|
|
333
|
+
Our changes are unified diffs in `vendor/patches/`, each tagged `fix` or `perf`
|
|
334
|
+
with its reason, listed by sha256 and applied strictly, hunk for hunk.
|
|
335
|
+
|
|
336
|
+
## Supply chain
|
|
337
|
+
|
|
338
|
+
Every input that reaches a wheel, and what pins it:
|
|
339
|
+
|
|
340
|
+
- Compiled code: vendored, each upstream pinned by commit and by one `tree_sha256`
|
|
341
|
+
of everything vendored for it, patches applied, which `check` verifies.
|
|
342
|
+
- Python tools and dependencies: hash-locked in `uv.lock`, with a one-week
|
|
343
|
+
cooldown (`exclude-newer`); builds install them with `--require-hashes` from
|
|
344
|
+
requirements exported from the lock, and cibuildwheel itself comes from it.
|
|
345
|
+
- The image: base by digest, Debian packages by snapshot date, uv by digest, and
|
|
346
|
+
the TSan CPython by sha256. Every check runs from the image's own
|
|
347
|
+
environment: nothing on the host can steer it.
|
|
348
|
+
- CI: actions pinned by commit; cibuildwheel pins its Linux images by digest and
|
|
349
|
+
its macOS and Windows Pythons by sha256. Dependabot moves pins with the same
|
|
350
|
+
cooldown.
|
|
351
|
+
|
|
352
|
+
Pinned by version or signature only, as nothing finer exists for them: clang and
|
|
353
|
+
lld from the manylinux and musllinux images' own package repositories (signed),
|
|
354
|
+
the macOS and Windows runners' compilers and SDKs, each held to `[toolchain]`;
|
|
355
|
+
cibuildwheel's own pip, build, auditwheel and delocate; and, for someone building
|
|
356
|
+
the sdist with build isolation, ninja from PyPI by version.
|
|
357
|
+
|
|
358
|
+
## Licensing
|
|
359
|
+
|
|
360
|
+
A wheel's `License-Expression` names everything compiled in, and `check` derives
|
|
361
|
+
it from `trimkit.toml`. All of it is permissive (MIT, ISC, BSD, Apache-2.0,
|
|
362
|
+
BSL-1.0) except Eigen's headers, MPL-2.0: file-level copyleft that binds only
|
|
363
|
+
those files, which are vendored unmodified (`check` refuses a patch to them),
|
|
364
|
+
built with `EIGEN_MPL2_ONLY`, and shipped as source in the sdist. Every license
|
|
365
|
+
ships in the wheel, with a PEP 770 SBOM generated from `trimkit.toml`.
|