trimkit 0.1.0__tar.gz → 0.2.1__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 → trimkit-0.2.1}/PKG-INFO +49 -29
- {trimkit-0.1.0 → trimkit-0.2.1}/README.md +48 -28
- {trimkit-0.1.0 → trimkit-0.2.1}/bench/versus.py +1 -1
- {trimkit-0.1.0 → trimkit-0.2.1}/pyproject.toml +1 -1
- {trimkit-0.1.0 → trimkit-0.2.1}/src/bvh.cpp +87 -31
- {trimkit-0.1.0 → trimkit-0.2.1}/src/collision.cpp +43 -2
- {trimkit-0.1.0 → trimkit-0.2.1}/src/common.hpp +30 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/numpy.hpp +69 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/trimkit/__init__.pyi +47 -9
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/golden.json +1 -1
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/helpers.py +1 -1
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_bvh.py +49 -10
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_golden.py +1 -1
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_invariants.py +86 -9
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_threads.py +1 -1
- {trimkit-0.1.0 → trimkit-0.2.1}/uv.lock +1 -1
- {trimkit-0.1.0 → trimkit-0.2.1}/.gitattributes +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/.gitignore +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/LICENSE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/results/convex_accuracy.md +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/results/cull.md +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/results/no_cull.md +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/trimkit_robot.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/versus_robots.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/bench/compare.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/bench/run.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/bench/scene.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/docker/Dockerfile +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/docker/Dockerfile.dockerignore +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/docs/trace.md +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/examples/ur10.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/atheris_bindings.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/bvh.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/collision.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/draco.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/draco_roundtrip.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/draco_seeds.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/earcut.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/meshoptimizer.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/parallel.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/svgpath.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/svgpath_format.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/vhacd.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/vulkan.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/xatlas.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/__main__.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/api.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/backend.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/builder.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/check_wheel.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/clang-format.yaml +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/clang-tidy.yaml +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/distro.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/licenses.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/pgo.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/scripts/vendor.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/cgroup.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/boost/assert.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/boost/math/constants/constants.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/coal/config.hh +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/coal/deprecated.hh +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/coal/tracy.hh +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/coal/warning.hh +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/config/draco/draco_features.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/draco.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/earcut.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/extension.map +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/meshoptimizer.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/parallel.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/svg.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/svgpath.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/tinybvh.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/trimkit/exchange.pyi +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/trimkit/py.typed +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/trimkit.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/vhacd.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/layout.comp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/scene.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/spirv.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/trace.comp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/vulkan.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/windows.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/src/xatlas.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/conftest.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/memory_limit.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/models/cycloidal.npz +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/svg_reference.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_collision.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_draco.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_earcut.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_gpu.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_meshoptimizer.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_scheduler.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_svg.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_svg_grammar.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_vhacd.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_xatlas.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/trimkit.toml +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/LICENSE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/AABB.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/BV.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/BV_node.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/OBB.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/OBBRSS.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/RSS.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/kDOP.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/kIOS.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BVH/BVH_front.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BVH/BVH_internal.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BVH/BVH_model.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BVH/BVH_utility.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/alloca.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/broadphase_callbacks.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/broadphase_collision_manager.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/broadphase_dynamic_AABB_tree_array-inl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/broadphase_dynamic_AABB_tree_array.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/hierarchy_tree_array-inl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/hierarchy_tree_array.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/morton-inl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/morton.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/node_base_array-inl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/node_base_array.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/collision_data.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/collision_object.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/collision_utility.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/contact_patch/polygon_convex_hull.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/data_types.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/fwd.hh +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/hfield.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/BV_fitter.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/BV_splitter.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/intersect.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/intersect.hxx +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/shape_shape_func.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/tools.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_base.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_bvh_shape.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_bvhs.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_hfield_shape.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_setup.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_shapes.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_recurse.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/logging.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/math/transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/gjk.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/minkowski_difference.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/narrowphase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/narrowphase_defaults.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/support_data.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/support_functions.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/convex.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/convex.hxx +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/geometric_shapes.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/geometric_shapes.hxx +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/geometric_shapes_traits.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/geometric_shapes_utility.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shared_ptr_comparison.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/third_party/boost/core/data.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/third_party/boost/core/detail/assert.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/third_party/boost/core/span.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/timings.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/AABB.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/OBB.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/OBBRSS.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/RSS.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/kDOP.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/kIOS.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BVH/BVH_model.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BVH/BVH_utility.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BVH/BV_fitter.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BVH/BV_splitter.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/broadphase/broadphase_collision_manager.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/broadphase/broadphase_dynamic_AABB_tree_array.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/broadphase/detail/morton.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_data.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_node.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_node.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_object.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_utility.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/contact_patch/polygon_convex_hull.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/distance/triangle_triangle.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/hfield.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/intersect.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/math/transform.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/narrowphase/details.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/narrowphase/gjk.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/narrowphase/minkowski_difference.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/narrowphase/support_functions.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/shape/geometric_shapes.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/shape/geometric_shapes_utility.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/traversal/traversal_recurse.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/LICENSE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_octahedron_transform.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_octahedron_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_quantization_transform.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_quantization_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_transform.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_transform_data.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_transform_type.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/geometry_attribute.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/geometry_attribute.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/geometry_indices.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/point_attribute.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/point_attribute.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_decoder_interface.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/linear_sequencer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/mesh_attribute_indices_encoding_data.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/normal_compression_utils.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/points_sequencer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_area.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_base.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoders_controller.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoders_controller.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoders_controller.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoders_controller.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/bit_coders/rans_bit_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/bit_coders/rans_bit_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/bit_coders/rans_bit_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/bit_coders/rans_bit_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/compression_shared.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/decoder_options.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/draco_options.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/encoder_options.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/encoding_features.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/decode.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/decode.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/encode_base.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/ans.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/rans_symbol_coding.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/rans_symbol_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/rans_symbol_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/shannon_entropy.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/shannon_entropy.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/symbol_decoding.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/symbol_decoding.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/symbol_encoding.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/symbol_encoding.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/expert_encode.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/expert_encode.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_shared.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_sequential_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_sequential_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_sequential_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_sequential_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/depth_first_traverser.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/max_prediction_degree_traverser.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/mesh_attribute_indices_encoding_observer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/mesh_traversal_sequencer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/traverser_base.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_encode_stats.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/bit_utils.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/bit_utils.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/bounding_box.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/data_buffer.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/data_buffer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/decoder_buffer.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/decoder_buffer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/divide.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/divide.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/draco_index_type.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/draco_index_type_vector.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/draco_types.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/draco_types.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/encoder_buffer.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/encoder_buffer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/hash_utils.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/hash_utils.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/int_utils.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/macros.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/math_utils.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/options.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/options.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/quantization_utils.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/quantization_utils.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/status.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/status.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/status_or.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/varint_decoding.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/varint_encoding.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/vector_d.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/corner_table.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/corner_table.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/corner_table_iterators.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh_attribute_corner_table.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh_attribute_corner_table.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh_misc_functions.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh_misc_functions.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/valence_cache.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/geometry_metadata.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/geometry_metadata.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata_decoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata_decoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata_encoder.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata_encoder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/point_cloud/point_cloud.cc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/point_cloud/point_cloud.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/dragonbox/LICENSE-Apache2-LLVM +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/dragonbox/LICENSE-Boost +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/dragonbox/include/dragonbox/dragonbox.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/earcut/LICENSE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/earcut/include/mapbox/earcut.hpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/COPYING.APACHE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/COPYING.BSD +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/COPYING.MPL2 +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Cholesky +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Core +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Geometry +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Householder +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Jacobi +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/LU +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/QR +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/SVD +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Version +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Cholesky/BunchKaufman.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Cholesky/LDLT.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Cholesky/LLT.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ApproxComparisons.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Array.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ArrayBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Assign.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/BandMatrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Block.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CommaInitializer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ConcatOp.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ConditionEstimator.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CoreIterators.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseTernaryOp.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DenseBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DenseStorage.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DeviceWrapper.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Diagonal.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Dot.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/EigenBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Fill.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/FindCoeff.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/GeneralProduct.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/IO.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/IndexedView.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/InnerProduct.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/InternalHeaderCheck.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Inverse.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Map.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MapBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MathFunctions.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Matrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MatrixBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MatrixNorms.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/NestByValue.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/NoAlias.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/NumTraits.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Predicator.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Product.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Random.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/RandomImpl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/RankRevealingBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/RealView.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Redux.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Ref.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Replicate.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Reshaped.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ReturnByValue.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Reverse.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SafeScaling.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ScaledPermutationMatrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Select.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Solve.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SolveTriangular.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SolverBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/StableNorm.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/StlIterators.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Stride.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/StructuredBindings.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Swap.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Transpose.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Transpositions.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/TriangularInPlace.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/VectorBlock.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Visitor.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathComplex.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathDoubleWord.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFrexpLdexp.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathPolynomials.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathPow.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathTrig.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMathBF16.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/Reductions.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/TernaryFunctors.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/AOCL_Support.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Assert.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/BlasTypes.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Constants.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/EmulateArray.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/LruCache.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/MKL_support.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Macros.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Memory.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Meta.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/MoreMeta.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Serializer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ShapeChecks.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/XprHelper.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Quaternion.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/RotationBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Scaling.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Transform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Translation.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Umeyama.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Householder/Householder.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Householder/InternalHeaderCheck.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/Determinant.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/FullPivLU.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/InternalHeaderCheck.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/InverseImpl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/PartialPivLU.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/HouseholderQR.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/InternalHeaderCheck.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/RandColPivHouseholderQR.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/BDCSVD.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/BDCSVDImpl.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/InternalHeaderCheck.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/SVDBase.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/BlockMethods.inc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.inc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/ReshapedMethods.inc +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/LICENSE-MIT +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/ascii_number.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/bigint.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/constexpr_feature_detect.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/decimal_to_binary.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/digit_comparison.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/fast_float.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/fast_table.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/float_common.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/parse_number.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/meshoptimizer/LICENSE.md +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/meshoptimizer/src/meshoptimizer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/meshoptimizer/src/simplifier.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/LICENSE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/cmake/darwin-ld-cpython.sym +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/eigen/dense.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/eigen/sparse.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/eigen/tensor.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/eval.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/intrusive/counter.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/intrusive/counter.inl +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/intrusive/ref.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/make_iterator.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nanobind.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_accessor.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_attr.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_backend.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_backend_slots.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_call.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_cast.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_class.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_defs.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_descr.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_error.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_func.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_misc.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_platform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_python.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_traits.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_tuple.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_types.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/ndarray.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/operators.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/array.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/bind_map.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/bind_vector.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/chrono.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/complex.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_array.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_dict.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_list.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_optional.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_set.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/traits.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/filesystem.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/function.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/list.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/map.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/optional.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/pair.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/set.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/shared_ptr.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/string.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/string_view.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/tuple.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/unique_ptr.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/unordered_map.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/unordered_set.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/variant.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/vector.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/wstring.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/trampoline.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/typing.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/__init__.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/__main__.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/buffer.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/common.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/error.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/hash.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/implicit.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_backend.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_combined.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_datetime.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_enum.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_ft.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_ft.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_func.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_internals.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_internals.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_ndarray.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_static_property.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_type.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/stubgen.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/trampoline.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/version.py +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/coal-bvh-bvh-performance.patch +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/draco-symbol-encoding.patch +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/earcut-convex-ring.patch +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/earcut-hole-bridge-blocks.patch +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/tinybvh-flat-node-bins.patch +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/vhacd-atomic-hull-counter.patch +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/vhacd-empty-volume.patch +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/vhacd-parallel-for.patch +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/xatlas-lost-wakeup.patch +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/LICENSE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/include/tsl/robin_growth_policy.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/include/tsl/robin_hash.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/include/tsl/robin_map.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/include/tsl/robin_set.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/tinybvh/LICENSE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/tinybvh/tiny_bvh.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/tinybvh/tiny_bvh_base.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vhacd/LICENSE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vhacd/include/VHACD.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/LICENSE.md +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_av1std.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_av1std_decode.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_av1std_encode.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h264std.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h264std_decode.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h264std_encode.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h265std.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h265std_decode.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h265std_encode.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_vp9std.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_vp9std_decode.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codecs_common.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vulkan/vk_platform.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vulkan/vulkan_core.h +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/xatlas/LICENSE +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/xatlas/source/xatlas/xatlas.cpp +0 -0
- {trimkit-0.1.0 → trimkit-0.2.1}/vendor/xatlas/source/xatlas/xatlas.h +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: trimkit
|
|
3
|
-
Version: 0.1
|
|
3
|
+
Version: 0.2.1
|
|
4
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
5
|
Description-Content-Type: text/markdown
|
|
6
6
|
Requires-Python: >=3.12
|
|
@@ -52,6 +52,44 @@ Most of the underlying geometry implementations in this package are mature and c
|
|
|
52
52
|
|
|
53
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
54
|
|
|
55
|
+
## Example
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
import trimkit
|
|
60
|
+
import numpy as np
|
|
61
|
+
|
|
62
|
+
# a tetrahedron
|
|
63
|
+
vertices = np.array([[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]], dtype=np.float64)
|
|
64
|
+
faces = np.array([[0, 2, 1], [0, 1, 3], [0, 3, 2], [1, 2, 3]], dtype=np.int64)
|
|
65
|
+
|
|
66
|
+
# place 2 tetrahedrons
|
|
67
|
+
instance_matrices = np.tile(np.eye(4), (2, 1, 1))
|
|
68
|
+
# translate the second one 0.5 units from the origin
|
|
69
|
+
instance_matrices[1, 0, 3] = 0.5
|
|
70
|
+
# the instance will be 2 copies of mesh `0`
|
|
71
|
+
instance_index = np.zeros(2, dtype=np.int64)
|
|
72
|
+
|
|
73
|
+
# the constructor takes numpy arrays
|
|
74
|
+
rays = trimkit.RayScene([(vertices, faces)])
|
|
75
|
+
|
|
76
|
+
# ray queries also take numpy arrays
|
|
77
|
+
origin, direction = np.array([-1.0, 0.2, 0.2]), np.array([1.0, 0.0, 0.0])
|
|
78
|
+
# the scene instancing is per-query
|
|
79
|
+
ray, instance, face, distance = rays.intersect(
|
|
80
|
+
origin, direction, instance_matrices, instance_index)
|
|
81
|
+
|
|
82
|
+
# the same constructor arguments work for collisions!
|
|
83
|
+
# convex can be per-mesh or every mesh
|
|
84
|
+
# if you're using trimesh you probably want this as:
|
|
85
|
+
# [m.is_convex for m in meshes]
|
|
86
|
+
# if you say it is, but it isn't, it won't break, just the
|
|
87
|
+
# returned queries will be wrong
|
|
88
|
+
solids = trimkit.CollisionScene([(vertices, faces)], convex=True)
|
|
89
|
+
touching = solids.collides(matrices, index)
|
|
90
|
+
distances, points, normals = solids.distances(matrices, index)
|
|
91
|
+
```
|
|
92
|
+
|
|
55
93
|
## Packaging
|
|
56
94
|
|
|
57
95
|
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.
|
|
@@ -80,33 +118,6 @@ This does not and will never load meshes, parse XML, or support anything that is
|
|
|
80
118
|
|
|
81
119
|
Everything below this line is LLM output.
|
|
82
120
|
|
|
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
121
|
<!-- api:start -->
|
|
111
122
|
<!-- generated by `uv run scripts generate` from the docstrings and trimkit.toml: don't edit -->
|
|
112
123
|
|
|
@@ -119,7 +130,7 @@ the closest points and the unit normal a planner's gradient is made of).
|
|
|
119
130
|
| `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
131
|
| `Boxes.bounds` | The box around every box.<br>`bounds = tree.bounds` |
|
|
121
132
|
| `Boxes.boxes` | Every box, exactly as given.<br>`boxes = tree.boxes()` |
|
|
122
|
-
| `Boxes.
|
|
133
|
+
| `Boxes.intersection` | Every box overlapping one query box or each of many, touching included.<br>`hits = tree.intersection(np.array([0.5, 0.5, 2.5, 2.5]))` |
|
|
123
134
|
| `triangulate` | Triangulate a polygon with holes.<br>`vertices, faces = trimkit.triangulate(exterior)` |
|
|
124
135
|
| `decompose` | Decompose a closed triangle mesh into approximately convex hulls.<br>`hulls = trimkit.decompose(vertices, faces, maximum_hulls=1)` |
|
|
125
136
|
| `parametrize` | Cut a mesh into charts and pack them into a UV atlas.<br>`vertex_sources, faces, uv = trimkit.parametrize(vertices, faces)` |
|
|
@@ -169,6 +180,15 @@ pairs) and sparse rows of what was found otherwise (hits, touching pairs,
|
|
|
169
180
|
overlapping boxes), and `decompose` answers a list of `Mesh`, one per hull. Nothing a
|
|
170
181
|
scene answers ever depends on what it was asked before, so threads can share one.
|
|
171
182
|
|
|
183
|
+
Every class pickles as exactly the arguments its constructor took, by name:
|
|
184
|
+
`Boxes` its `boxes`, `RayScene` its `meshes` and `use_gpu`, and `CollisionScene`
|
|
185
|
+
its `meshes` and which are `convex`. A pickle holds only numpy arrays and Python
|
|
186
|
+
values, never a BVH or a collision model, so loading one (or a `copy.deepcopy`)
|
|
187
|
+
builds those again, taking as long as the constructor did, and answers bit for
|
|
188
|
+
bit what the original does. It loads into any version of trimkit whose
|
|
189
|
+
constructor takes the same names, and a `RayScene` pickled with `use_gpu=True`
|
|
190
|
+
answers on the CPU, with its one warning, where no device is found.
|
|
191
|
+
|
|
172
192
|
`RayScene`, `Boxes` and `CollisionScene` queries spread big batches, and
|
|
173
193
|
`decompose` its hull splits and merge costs, across the cores they may run on
|
|
174
194
|
(their affinity, within a cgroup's CPU quota), on one pool of workers that exit
|
|
@@ -16,6 +16,44 @@ Most of the underlying geometry implementations in this package are mature and c
|
|
|
16
16
|
|
|
17
17
|
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.
|
|
18
18
|
|
|
19
|
+
## Example
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
import trimkit
|
|
24
|
+
import numpy as np
|
|
25
|
+
|
|
26
|
+
# a tetrahedron
|
|
27
|
+
vertices = np.array([[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]], dtype=np.float64)
|
|
28
|
+
faces = np.array([[0, 2, 1], [0, 1, 3], [0, 3, 2], [1, 2, 3]], dtype=np.int64)
|
|
29
|
+
|
|
30
|
+
# place 2 tetrahedrons
|
|
31
|
+
instance_matrices = np.tile(np.eye(4), (2, 1, 1))
|
|
32
|
+
# translate the second one 0.5 units from the origin
|
|
33
|
+
instance_matrices[1, 0, 3] = 0.5
|
|
34
|
+
# the instance will be 2 copies of mesh `0`
|
|
35
|
+
instance_index = np.zeros(2, dtype=np.int64)
|
|
36
|
+
|
|
37
|
+
# the constructor takes numpy arrays
|
|
38
|
+
rays = trimkit.RayScene([(vertices, faces)])
|
|
39
|
+
|
|
40
|
+
# ray queries also take numpy arrays
|
|
41
|
+
origin, direction = np.array([-1.0, 0.2, 0.2]), np.array([1.0, 0.0, 0.0])
|
|
42
|
+
# the scene instancing is per-query
|
|
43
|
+
ray, instance, face, distance = rays.intersect(
|
|
44
|
+
origin, direction, instance_matrices, instance_index)
|
|
45
|
+
|
|
46
|
+
# the same constructor arguments work for collisions!
|
|
47
|
+
# convex can be per-mesh or every mesh
|
|
48
|
+
# if you're using trimesh you probably want this as:
|
|
49
|
+
# [m.is_convex for m in meshes]
|
|
50
|
+
# if you say it is, but it isn't, it won't break, just the
|
|
51
|
+
# returned queries will be wrong
|
|
52
|
+
solids = trimkit.CollisionScene([(vertices, faces)], convex=True)
|
|
53
|
+
touching = solids.collides(matrices, index)
|
|
54
|
+
distances, points, normals = solids.distances(matrices, index)
|
|
55
|
+
```
|
|
56
|
+
|
|
19
57
|
## Packaging
|
|
20
58
|
|
|
21
59
|
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.
|
|
@@ -44,33 +82,6 @@ This does not and will never load meshes, parse XML, or support anything that is
|
|
|
44
82
|
|
|
45
83
|
Everything below this line is LLM output.
|
|
46
84
|
|
|
47
|
-
Rays and collision against the same meshes, placed the same way: one mesh, two
|
|
48
|
-
instances of it, and every query names where they are.
|
|
49
|
-
|
|
50
|
-
```python
|
|
51
|
-
import numpy as np
|
|
52
|
-
import trimkit
|
|
53
|
-
|
|
54
|
-
# a tetrahedron, placed twice: where it is, and moved half a unit along x
|
|
55
|
-
vertices = np.array([[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]], dtype=np.float64)
|
|
56
|
-
faces = np.array([[0, 2, 1], [0, 1, 3], [0, 3, 2], [1, 2, 3]], dtype=np.int64)
|
|
57
|
-
matrices = np.tile(np.eye(4), (2, 1, 1))
|
|
58
|
-
matrices[1, 0, 3] = 0.5
|
|
59
|
-
index = np.zeros(2, dtype=np.int64)
|
|
60
|
-
|
|
61
|
-
origin, direction = np.array([-1.0, 0.2, 0.2]), np.array([1.0, 0.0, 0.0])
|
|
62
|
-
rays = trimkit.RayScene([(vertices, faces)])
|
|
63
|
-
ray, instance, face, distance = rays.intersect(origin, direction, matrices, index)
|
|
64
|
-
solids = trimkit.CollisionScene([(vertices, faces)], convex=True)
|
|
65
|
-
touching = solids.collides(matrices, index)
|
|
66
|
-
distances, points, normals = solids.distances(matrices, index)
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
The ray crosses the two tetrahedra four times (`distance` is `[1.0, 1.5, 1.6,
|
|
70
|
-
2.1]`, `instance` `[0, 1, 0, 1]`), the pair touches (`touching` is `[[0, 1]]`),
|
|
71
|
-
and `distances` says how deep, where and along which direction (`-0.29`, with
|
|
72
|
-
the closest points and the unit normal a planner's gradient is made of).
|
|
73
|
-
|
|
74
85
|
<!-- api:start -->
|
|
75
86
|
<!-- generated by `uv run scripts generate` from the docstrings and trimkit.toml: don't edit -->
|
|
76
87
|
|
|
@@ -83,7 +94,7 @@ the closest points and the unit normal a planner's gradient is made of).
|
|
|
83
94
|
| `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]]]))` |
|
|
84
95
|
| `Boxes.bounds` | The box around every box.<br>`bounds = tree.bounds` |
|
|
85
96
|
| `Boxes.boxes` | Every box, exactly as given.<br>`boxes = tree.boxes()` |
|
|
86
|
-
| `Boxes.
|
|
97
|
+
| `Boxes.intersection` | Every box overlapping one query box or each of many, touching included.<br>`hits = tree.intersection(np.array([0.5, 0.5, 2.5, 2.5]))` |
|
|
87
98
|
| `triangulate` | Triangulate a polygon with holes.<br>`vertices, faces = trimkit.triangulate(exterior)` |
|
|
88
99
|
| `decompose` | Decompose a closed triangle mesh into approximately convex hulls.<br>`hulls = trimkit.decompose(vertices, faces, maximum_hulls=1)` |
|
|
89
100
|
| `parametrize` | Cut a mesh into charts and pack them into a UV atlas.<br>`vertex_sources, faces, uv = trimkit.parametrize(vertices, faces)` |
|
|
@@ -133,6 +144,15 @@ pairs) and sparse rows of what was found otherwise (hits, touching pairs,
|
|
|
133
144
|
overlapping boxes), and `decompose` answers a list of `Mesh`, one per hull. Nothing a
|
|
134
145
|
scene answers ever depends on what it was asked before, so threads can share one.
|
|
135
146
|
|
|
147
|
+
Every class pickles as exactly the arguments its constructor took, by name:
|
|
148
|
+
`Boxes` its `boxes`, `RayScene` its `meshes` and `use_gpu`, and `CollisionScene`
|
|
149
|
+
its `meshes` and which are `convex`. A pickle holds only numpy arrays and Python
|
|
150
|
+
values, never a BVH or a collision model, so loading one (or a `copy.deepcopy`)
|
|
151
|
+
builds those again, taking as long as the constructor did, and answers bit for
|
|
152
|
+
bit what the original does. It loads into any version of trimkit whose
|
|
153
|
+
constructor takes the same names, and a `RayScene` pickled with `use_gpu=True`
|
|
154
|
+
answers on the CPU, with its one warning, where no device is found.
|
|
155
|
+
|
|
136
156
|
`RayScene`, `Boxes` and `CollisionScene` queries spread big batches, and
|
|
137
157
|
`decompose` its hull splits and merge costs, across the cores they may run on
|
|
138
158
|
(their affinity, within a cgroup's CPU quota), on one pool of workers that exit
|
|
@@ -8,7 +8,7 @@ backend-path = ["scripts"]
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "trimkit"
|
|
11
|
-
version = "0.1
|
|
11
|
+
version = "0.2.1"
|
|
12
12
|
description = "Thin stable-ABI numpy bindings to mature geometry libraries: rays and boxes, collision, triangulation, convex decomposition, UV atlases, simplification, draco and SVG paths."
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
requires-python = ">=3.12"
|
|
@@ -63,6 +63,8 @@ using FacesArg = trimkit::Array<std::int64_t, -1, 3>;
|
|
|
63
63
|
using BoundsArg = trimkit::Array<double, -1, 2, -1>;
|
|
64
64
|
using Bounds = trimkit::In<double, -1, 2, -1>;
|
|
65
65
|
|
|
66
|
+
using BoxQueriesArgument = trimkit::BoxQueriesArgument;
|
|
67
|
+
|
|
66
68
|
// A BVH as tinybvh builds it, with its test of a ray against one known
|
|
67
69
|
// triangle callable: tinybvh keeps that protected, and every hit of
|
|
68
70
|
// `intersect` is measured with it
|
|
@@ -265,7 +267,7 @@ public:
|
|
|
265
267
|
RayScene(const RayScene&) = delete;
|
|
266
268
|
RayScene& operator=(const RayScene&) = delete;
|
|
267
269
|
|
|
268
|
-
RayScene(const trimkit::Meshes& meshes, trimkit::Flag use_gpu) {
|
|
270
|
+
RayScene(const trimkit::Meshes& meshes, trimkit::Flag use_gpu) : use_gpu_(use_gpu.value) {
|
|
269
271
|
std::vector<trimkit::Mesh<std::uint64_t>> read = trimkit::read_meshes<std::uint64_t>(meshes);
|
|
270
272
|
meshes_.resize(read.size());
|
|
271
273
|
blas_.resize(read.size());
|
|
@@ -296,6 +298,28 @@ public:
|
|
|
296
298
|
|
|
297
299
|
std::size_t size() const { return meshes_.size(); }
|
|
298
300
|
|
|
301
|
+
// pickled as its meshes, exactly as it holds them, and `use_gpu` as asked:
|
|
302
|
+
// a load without a device answers on the CPU, as a build without one does
|
|
303
|
+
nb::dict constructor_arguments() const {
|
|
304
|
+
nb::list meshes;
|
|
305
|
+
for (const std::unique_ptr<RayMesh>& mesh : meshes_) {
|
|
306
|
+
const std::vector<Vec>& points = mesh->vertices();
|
|
307
|
+
std::vector<double> vertices(3 * points.size());
|
|
308
|
+
for (std::size_t i = 0; i < points.size(); i++) {
|
|
309
|
+
for (std::size_t axis = 0; axis < 3; axis++) {
|
|
310
|
+
vertices[(3 * i) + axis] = points[i][static_cast<std::int32_t>(axis)];
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
std::vector<std::uint64_t> faces = mesh->faces();
|
|
314
|
+
meshes.append(nb::make_tuple(trimkit::to_numpy_rows(std::move(vertices), {3}),
|
|
315
|
+
trimkit::to_numpy_rows<std::int64_t>(std::move(faces), {3})));
|
|
316
|
+
}
|
|
317
|
+
const nb::dict arguments;
|
|
318
|
+
arguments["meshes"] = meshes;
|
|
319
|
+
arguments["use_gpu"] = use_gpu_;
|
|
320
|
+
return arguments;
|
|
321
|
+
}
|
|
322
|
+
|
|
299
323
|
trimkit::Out<bool> intersect_any(const RaysArg& origins_argument, const RaysArg& directions_argument,
|
|
300
324
|
const trimkit::InstanceMatrices& matrices_argument,
|
|
301
325
|
const trimkit::InstanceIndex& index_argument) const {
|
|
@@ -729,6 +753,8 @@ private:
|
|
|
729
753
|
static constexpr double RELATIVE_STEP = 9.094947017729282e-13; // 2^-40
|
|
730
754
|
|
|
731
755
|
std::vector<std::unique_ptr<RayMesh>> meshes_;
|
|
756
|
+
// whether it was asked to trace on a device, which a pickle asks again
|
|
757
|
+
bool use_gpu_ = false;
|
|
732
758
|
// each mesh's BVH, or null without faces, as every top level indexes them
|
|
733
759
|
std::vector<tinybvh::BVH_Double*> blas_;
|
|
734
760
|
// the top level last built, swapped whole: a query keeps the one it read.
|
|
@@ -757,7 +783,7 @@ public:
|
|
|
757
783
|
")");
|
|
758
784
|
}
|
|
759
785
|
const nb::gil_scoped_release release;
|
|
760
|
-
build(corners_of(boxes, "boxes"));
|
|
786
|
+
build(corners_of(boxes.data(), boxes.shape(0), "boxes"));
|
|
761
787
|
}
|
|
762
788
|
|
|
763
789
|
// 3D boxes as (minimum, maximum) corner pairs, already checked
|
|
@@ -768,6 +794,13 @@ public:
|
|
|
768
794
|
|
|
769
795
|
std::size_t size() const { return boxes_.size() / 2; }
|
|
770
796
|
|
|
797
|
+
// pickled as the boxes it was built from
|
|
798
|
+
nb::dict constructor_arguments() const {
|
|
799
|
+
const nb::dict arguments;
|
|
800
|
+
arguments["boxes"] = boxes();
|
|
801
|
+
return arguments;
|
|
802
|
+
}
|
|
803
|
+
|
|
771
804
|
// the box around every box: (2, d), or +inf then -inf with none
|
|
772
805
|
trimkit::Out<double> bounds() const {
|
|
773
806
|
std::vector<double> bounds(2 * dimension_);
|
|
@@ -796,22 +829,29 @@ public:
|
|
|
796
829
|
return trimkit::to_numpy_rows(std::move(boxes), {2, dimension_});
|
|
797
830
|
}
|
|
798
831
|
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
const
|
|
806
|
-
|
|
832
|
+
// every box overlapping each query, touching included like rtree: one
|
|
833
|
+
// query, (2d,) or (2, d), answers its sorted boxes, (n,), and many,
|
|
834
|
+
// (q, 2d) or (q, 2, d), their [query, box] rows, (k, 2). Every form is
|
|
835
|
+
// (q, 2, d) in memory, so they read as it and share one traversal; the
|
|
836
|
+
// last extent tells the layouts apart, as 2d is never d
|
|
837
|
+
trimkit::Out<std::int64_t> intersection(const BoxQueriesArgument& argument) const {
|
|
838
|
+
const trimkit::BoxQueries queries = trimkit::read_box_queries(argument, dimension_, "queries");
|
|
839
|
+
return answer(queries.data, queries.count, queries.one);
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
private:
|
|
843
|
+
// `count` queries of (2, d) corners at `data`: their sorted boxes for
|
|
844
|
+
// `one` query, else [query, box] rows in query order
|
|
845
|
+
trimkit::Out<std::int64_t> answer(const double* data, std::size_t count, bool one) const {
|
|
846
|
+
const std::vector<Vec> corners = corners_of(data, count, "queries");
|
|
807
847
|
trimkit::Gathered<std::int64_t> pairs;
|
|
808
848
|
trimkit::gather_in_parallel<std::int64_t>(
|
|
809
|
-
|
|
849
|
+
count, &pairs, [&](std::size_t begin, std::size_t end, std::vector<std::int64_t>& rows) {
|
|
810
850
|
Stack stack = make_stack();
|
|
811
851
|
std::vector<std::int64_t> boxes_hit;
|
|
812
852
|
for (std::size_t q = begin; q < end; q++) {
|
|
813
853
|
boxes_hit.clear();
|
|
814
|
-
overlapping(
|
|
854
|
+
overlapping(corners[2 * q], corners[(2 * q) + 1], stack,
|
|
815
855
|
[&](std::uint64_t box) { boxes_hit.push_back(static_cast<std::int64_t>(box)); });
|
|
816
856
|
// ascending boxes, so the same query always reads the same
|
|
817
857
|
std::sort(boxes_hit.begin(), boxes_hit.end());
|
|
@@ -821,10 +861,19 @@ public:
|
|
|
821
861
|
}
|
|
822
862
|
}
|
|
823
863
|
});
|
|
824
|
-
|
|
864
|
+
auto rows = trimkit::gathered_rows(pairs);
|
|
865
|
+
if (!one) {
|
|
866
|
+
return trimkit::to_numpy_rows<std::int64_t>(std::move(rows), {2});
|
|
867
|
+
}
|
|
868
|
+
// one query: its column of boxes
|
|
869
|
+
const std::int64_t* row = trimkit::elements(rows);
|
|
870
|
+
std::vector<std::int64_t> boxes(rows.size() / 2);
|
|
871
|
+
for (std::size_t i = 0; i < boxes.size(); i++) {
|
|
872
|
+
boxes[i] = row[(2 * i) + 1];
|
|
873
|
+
}
|
|
874
|
+
return trimkit::to_numpy(std::move(boxes), {boxes.size()});
|
|
825
875
|
}
|
|
826
876
|
|
|
827
|
-
private:
|
|
828
877
|
void build(std::vector<Vec>&& corners) {
|
|
829
878
|
boxes_ = std::move(corners);
|
|
830
879
|
for (std::size_t corner = 0; corner < boxes_.size(); corner += 2) {
|
|
@@ -844,11 +893,10 @@ private:
|
|
|
844
893
|
return bounds.ndim() == 3 ? bounds.shape(2) : 0;
|
|
845
894
|
}
|
|
846
895
|
|
|
847
|
-
// (min, max) corner pairs
|
|
848
|
-
|
|
849
|
-
|
|
896
|
+
// `n` (min, max) corner pairs of the boxes' dimension at `b`, as 3D
|
|
897
|
+
// points, each pair checked to be ordered
|
|
898
|
+
std::vector<Vec> corners_of(const double* b, std::size_t n, const char* name) const {
|
|
850
899
|
const std::size_t d = dimension_;
|
|
851
|
-
const double* b = bounds.data();
|
|
852
900
|
std::vector<Vec> corners(2 * n);
|
|
853
901
|
for (std::size_t i = 0; i < n; i++) {
|
|
854
902
|
const double* lo = b + (2 * d * i);
|
|
@@ -922,8 +970,8 @@ trimkit::BoxesObject trimkit::scene_boxes(const std::vector<double>& boxes) {
|
|
|
922
970
|
void bind_bvh(nb::module_& m) {
|
|
923
971
|
tinybvh::tinybvh_set_fatal_error_handler(throw_tinybvh_error);
|
|
924
972
|
|
|
925
|
-
|
|
926
|
-
|
|
973
|
+
trimkit::picklable_class<RayScene>(m, "RayScene",
|
|
974
|
+
R"(Meshes, each built once into a double precision BVH, and the only
|
|
927
975
|
thing rays are cast against.
|
|
928
976
|
|
|
929
977
|
Every query names its instances (which mesh, placed where), as a
|
|
@@ -1074,8 +1122,8 @@ Examples
|
|
|
1074
1122
|
>>> hits.tolist()
|
|
1075
1123
|
[True])");
|
|
1076
1124
|
|
|
1077
|
-
|
|
1078
|
-
|
|
1125
|
+
trimkit::picklable_class<Boxes>(m, "Boxes",
|
|
1126
|
+
R"(Axis-aligned boxes built into a BVH for overlap queries: a static,
|
|
1079
1127
|
numpy-native replacement for a bulk-loaded R-tree.
|
|
1080
1128
|
|
|
1081
1129
|
Parameters
|
|
@@ -1131,26 +1179,34 @@ Examples
|
|
|
1131
1179
|
>>> boxes = tree.boxes()
|
|
1132
1180
|
>>> boxes.shape
|
|
1133
1181
|
(2, 2, 2))")
|
|
1134
|
-
.def("
|
|
1135
|
-
R"(Every box overlapping
|
|
1182
|
+
.def("intersection", &Boxes::intersection, nb::arg("queries"),
|
|
1183
|
+
R"(Every box overlapping one query box or each of many, touching included.
|
|
1184
|
+
|
|
1185
|
+
A superset of an R-tree's `intersection`: one query box, flat as
|
|
1186
|
+
(min..., max...) or as its two corners, answers the boxes it overlaps,
|
|
1187
|
+
and a batch of either answers every overlap at once.
|
|
1136
1188
|
|
|
1137
1189
|
Parameters
|
|
1138
1190
|
----------
|
|
1139
|
-
queries : (m, 2, d) float64
|
|
1140
|
-
|
|
1191
|
+
queries : (2d,), (2, d), (m, 2d) or (m, 2, d) float64
|
|
1192
|
+
One query's or each query's minimum and maximum corner, in the
|
|
1193
|
+
boxes' dimension d: flat, (min..., max...), or as two corners.
|
|
1141
1194
|
|
|
1142
1195
|
Returns
|
|
1143
1196
|
-------
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1197
|
+
hits : (n,) or (k, 2) int64
|
|
1198
|
+
For one query, every box it overlaps, ascending. For many,
|
|
1199
|
+
rows of [query, box] for every overlap, sorted by query and
|
|
1200
|
+
then box.
|
|
1147
1201
|
|
|
1148
1202
|
Examples
|
|
1149
1203
|
--------
|
|
1150
1204
|
>>> import numpy as np
|
|
1151
1205
|
>>> import trimkit
|
|
1152
1206
|
>>> tree = trimkit.Boxes(np.array([[[0.0, 0.0], [1.0, 1.0]], [[2.0, 2.0], [3.0, 3.0]]]))
|
|
1153
|
-
>>>
|
|
1154
|
-
>>>
|
|
1207
|
+
>>> hits = tree.intersection(np.array([0.5, 0.5, 2.5, 2.5]))
|
|
1208
|
+
>>> hits.tolist()
|
|
1209
|
+
[0, 1]
|
|
1210
|
+
>>> tree.intersection(np.array([[[0.5, 0.5], [2.5, 2.5]]])).tolist()
|
|
1155
1211
|
[[0, 0], [0, 1]])");
|
|
1156
1212
|
}
|
|
@@ -82,9 +82,33 @@ public:
|
|
|
82
82
|
if (face_count_ > 0) {
|
|
83
83
|
const nb::gil_scoped_release release;
|
|
84
84
|
build(mesh.vertices.data(), mesh.vertices.shape(0), mesh.faces, convex);
|
|
85
|
+
} else {
|
|
86
|
+
// no model holds them, so a pickle can still give them back
|
|
87
|
+
loose_vertices_.assign(mesh.vertices.data(), mesh.vertices.data() + (3 * mesh.vertices.shape(0)));
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
90
|
|
|
91
|
+
// the mesh as it was given: the model's own copy, in the order given
|
|
92
|
+
nb::tuple as_given() const {
|
|
93
|
+
std::vector<double> vertices = loose_vertices_;
|
|
94
|
+
std::vector<std::int64_t> faces(3 * face_count_);
|
|
95
|
+
if (model_) {
|
|
96
|
+
vertices.resize(3 * model_->vertices->size());
|
|
97
|
+
for (std::size_t i = 0; i < model_->vertices->size(); i++) {
|
|
98
|
+
for (std::size_t axis = 0; axis < 3; axis++) {
|
|
99
|
+
vertices[(3 * i) + axis] = (*model_->vertices)[i][static_cast<Eigen::Index>(axis)];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
for (std::size_t f = 0; f < face_count_; f++) {
|
|
103
|
+
for (std::size_t corner = 0; corner < 3; corner++) {
|
|
104
|
+
faces[(3 * f) + corner] = (*model_->tri_indices)[f][static_cast<std::uint32_t>(corner)];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return nb::make_tuple(trimkit::to_numpy_rows(std::move(vertices), {3}),
|
|
109
|
+
trimkit::to_numpy_rows(std::move(faces), {3}));
|
|
110
|
+
}
|
|
111
|
+
|
|
88
112
|
std::size_t size() const { return face_count_; }
|
|
89
113
|
bool empty() const { return face_count_ == 0; }
|
|
90
114
|
const Model& model() const { return *model_; }
|
|
@@ -123,6 +147,8 @@ private:
|
|
|
123
147
|
}
|
|
124
148
|
|
|
125
149
|
std::size_t face_count_ = 0;
|
|
150
|
+
// the vertices of a mesh without faces, which no model holds
|
|
151
|
+
std::vector<double> loose_vertices_;
|
|
126
152
|
std::array<double, 6> box_{};
|
|
127
153
|
std::shared_ptr<Model> model_;
|
|
128
154
|
std::unique_ptr<Convex> convex_;
|
|
@@ -360,6 +386,21 @@ public:
|
|
|
360
386
|
|
|
361
387
|
std::size_t size() const { return meshes_.size(); }
|
|
362
388
|
|
|
389
|
+
// pickled as its meshes as given and which of them are convex
|
|
390
|
+
nb::dict constructor_arguments() const {
|
|
391
|
+
nb::list meshes;
|
|
392
|
+
std::vector<std::uint8_t> convex(meshes_.size());
|
|
393
|
+
for (std::size_t i = 0; i < meshes_.size(); i++) {
|
|
394
|
+
meshes.append(meshes_[i]->as_given());
|
|
395
|
+
convex[i] = meshes_[i]->convex() != nullptr ? 1 : 0;
|
|
396
|
+
}
|
|
397
|
+
const std::size_t count = convex.size();
|
|
398
|
+
const nb::dict arguments;
|
|
399
|
+
arguments["meshes"] = meshes;
|
|
400
|
+
arguments["convex"] = trimkit::to_numpy<bool>(std::move(convex), {count});
|
|
401
|
+
return arguments;
|
|
402
|
+
}
|
|
403
|
+
|
|
363
404
|
trimkit::Out<std::int64_t> collides(const trimkit::InstanceMatrices& matrices_argument,
|
|
364
405
|
const trimkit::InstanceIndex& index_argument, const PairsArg& pairs_argument,
|
|
365
406
|
trimkit::Number<double> margin_argument) const {
|
|
@@ -593,8 +634,8 @@ private:
|
|
|
593
634
|
} // namespace
|
|
594
635
|
|
|
595
636
|
void bind_collision(nb::module_& m) {
|
|
596
|
-
|
|
597
|
-
|
|
637
|
+
trimkit::picklable_class<CollisionScene>(m, "CollisionScene",
|
|
638
|
+
R"(Meshes to place and query against each other. A scene never changes:
|
|
598
639
|
each query names its own instances, so threads may share one.
|
|
599
640
|
|
|
600
641
|
Every query takes its instances (which mesh, placed where) and the pairs
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
#include <memory>
|
|
22
22
|
#include <string>
|
|
23
23
|
#include <thread>
|
|
24
|
+
#include <type_traits>
|
|
25
|
+
#include <utility>
|
|
24
26
|
#include <vector>
|
|
25
27
|
|
|
26
28
|
// Each part of the one extension, src/PART.cpp, adds its functions and
|
|
@@ -475,6 +477,34 @@ inline Instances read_instances(const InstanceViews& views, std::size_t mesh_cou
|
|
|
475
477
|
return instances;
|
|
476
478
|
}
|
|
477
479
|
|
|
480
|
+
// A bound class whose objects pickle, the only way the package binds one.
|
|
481
|
+
// `T` says what it pickles as with `nb::dict constructor_arguments() const`:
|
|
482
|
+
// its constructor's arguments, by their names, from which a load builds it
|
|
483
|
+
// again (a compile error without it). Never an acceleration structure, which
|
|
484
|
+
// is rebuilt: a pickle holds only arrays and Python values, named, so it loads
|
|
485
|
+
// into any build whose constructor takes the same names.
|
|
486
|
+
// tests/test_invariants.py round-trips every class the package binds
|
|
487
|
+
template <typename T>
|
|
488
|
+
nb::class_<T> picklable_class(nb::module_& m, const char* name, const char* doc) {
|
|
489
|
+
static_assert(std::is_same_v<decltype(std::declval<const T&>().constructor_arguments()), nb::dict>,
|
|
490
|
+
"a bound class must say what it pickles as: nb::dict constructor_arguments() const");
|
|
491
|
+
nb::class_<T> bound(m, name, doc);
|
|
492
|
+
bound.def(
|
|
493
|
+
"__reduce__",
|
|
494
|
+
[](nb::handle self) {
|
|
495
|
+
const nb::dict arguments = nb::cast<const T&>(self).constructor_arguments();
|
|
496
|
+
const nb::object partial = nb::module_::import_("functools").attr("partial");
|
|
497
|
+
return nb::make_tuple(partial(nb::borrow(self.type()), **arguments), nb::make_tuple());
|
|
498
|
+
},
|
|
499
|
+
R"(Pickle as its constructor's arguments, by name: anything built from them is built again on load.
|
|
500
|
+
|
|
501
|
+
Returns
|
|
502
|
+
-------
|
|
503
|
+
reduced : tuple
|
|
504
|
+
Its constructor with those arguments bound, as pickle and copy call it.)");
|
|
505
|
+
return bound;
|
|
506
|
+
}
|
|
507
|
+
|
|
478
508
|
} // namespace trimkit
|
|
479
509
|
|
|
480
510
|
// `BoxesObject` returns its object, shown as `Boxes`
|
|
@@ -88,6 +88,24 @@ struct RaysArgument {
|
|
|
88
88
|
nb::handle object;
|
|
89
89
|
};
|
|
90
90
|
|
|
91
|
+
// Boxes' queries as an argument: (2d,) or (2, d) for one query, (q, 2d) or
|
|
92
|
+
// (q, 2, d) for many, each (q, 2, d) in memory. `read_box_queries` reads it,
|
|
93
|
+
// and the signature shows each array shape it takes
|
|
94
|
+
struct BoxQueriesArgument {
|
|
95
|
+
nb::handle object;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// What `read_box_queries` read: `count` queries of a minimum and a maximum
|
|
99
|
+
// corner at `data`, each `dimension` float64, and whether it was given as
|
|
100
|
+
// `one` query rather than a batch. Valid while it is: it holds the argument,
|
|
101
|
+
// or its one copy
|
|
102
|
+
struct BoxQueries {
|
|
103
|
+
AnyIn held;
|
|
104
|
+
const double* data = nullptr;
|
|
105
|
+
std::size_t count = 0;
|
|
106
|
+
bool one = false;
|
|
107
|
+
};
|
|
108
|
+
|
|
91
109
|
// What `read_rays` read: `count` rows of three, or one row that is every
|
|
92
110
|
// ray's (`one`, with a count of 1), float64 or, for a float32 array taken as
|
|
93
111
|
// it is, float32. Valid while it is: it holds the argument, or its one copy
|
|
@@ -424,6 +442,47 @@ inline void check_rays(const Rays& rays, const std::string& name) {
|
|
|
424
442
|
}
|
|
425
443
|
}
|
|
426
444
|
|
|
445
|
+
// A box queries argument for boxes of `dimension`: one query, (2d,) flat as
|
|
446
|
+
// (min..., max...) or (2, d) as two corners, or many, (q, 2d) or (q, 2, d),
|
|
447
|
+
// told apart by the last extent as 2d is never d. Read as `read` takes any
|
|
448
|
+
// array: its shape checked first, in place when exactly float64, else one
|
|
449
|
+
// copy, converted with the warning when its dtype isn't, and its values
|
|
450
|
+
// checked. Any other shape is the wrong type, as every argument's is
|
|
451
|
+
inline BoxQueries read_box_queries(const BoxQueriesArgument& argument, std::size_t dimension, const std::string& name) {
|
|
452
|
+
// its shape as numpy sees it: none when it isn't array-like at all
|
|
453
|
+
const nb::object seen = detail::seen_as_array(argument.object);
|
|
454
|
+
std::vector<std::size_t> extents;
|
|
455
|
+
if (seen.is_valid()) {
|
|
456
|
+
for (const nb::handle extent : nb::borrow<nb::tuple>(seen.attr("shape"))) {
|
|
457
|
+
extents.push_back(nb::cast<std::size_t>(extent));
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
const std::size_t last = extents.empty() ? 0 : extents.back();
|
|
461
|
+
BoxQueries queries;
|
|
462
|
+
queries.one =
|
|
463
|
+
(extents.size() == 1 && last == 2 * dimension) || (extents.size() == 2 && extents[0] == 2 && last == dimension);
|
|
464
|
+
const bool many =
|
|
465
|
+
(extents.size() == 2 && last == 2 * dimension) || (extents.size() == 3 && extents[1] == 2 && last == dimension);
|
|
466
|
+
bool taken = false;
|
|
467
|
+
if (queries.one || many) {
|
|
468
|
+
taken = detail::any_readable(argument.object, &queries.held) && queries.held.dtype() == nb::dtype<double>();
|
|
469
|
+
if (!taken) {
|
|
470
|
+
const nb::object copy = detail::relaid(argument.object, seen, "float64", name);
|
|
471
|
+
taken = copy.is_valid() && detail::any_readable(copy, &queries.held) &&
|
|
472
|
+
queries.held.dtype() == nb::dtype<double>();
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
if (!taken) {
|
|
476
|
+
type_error(name + " must be float64 of shape (" + std::to_string(2 * dimension) + ",) or (2, " +
|
|
477
|
+
std::to_string(dimension) + ") for one query, or (*, " + std::to_string(2 * dimension) +
|
|
478
|
+
") or (*, 2, " + std::to_string(dimension) + ") for many, not " + describe(argument.object));
|
|
479
|
+
}
|
|
480
|
+
queries.data = static_cast<const double*>(queries.held.data());
|
|
481
|
+
queries.count = queries.one ? 1 : extents[0];
|
|
482
|
+
check_values(queries.data, 2 * dimension * queries.count, COORDINATE_LIMIT, name);
|
|
483
|
+
return queries;
|
|
484
|
+
}
|
|
485
|
+
|
|
427
486
|
// An array argument viewed: its dtype, shape and layout as `read` checks
|
|
428
487
|
// them, its values not looked at. For what copies the values and checks the
|
|
429
488
|
// copy (a query's instances)
|
|
@@ -719,6 +778,16 @@ struct rays_shown {
|
|
|
719
778
|
template <>
|
|
720
779
|
struct type_caster<trimkit::RaysArgument> : passed_through<trimkit::RaysArgument, rays_shown> {};
|
|
721
780
|
|
|
781
|
+
// `BoxQueriesArgument` shows up as each array shape it reads
|
|
782
|
+
struct box_queries_shown {
|
|
783
|
+
// NOLINTNEXTLINE(readability-identifier-naming): the name nanobind reads
|
|
784
|
+
static constexpr auto Name = make_caster<trimkit::In<double, -1>>::Name + const_name(" | ") +
|
|
785
|
+
make_caster<trimkit::In<double, -1, -1>>::Name + const_name(" | ") +
|
|
786
|
+
make_caster<trimkit::In<double, -1, 2, -1>>::Name;
|
|
787
|
+
};
|
|
788
|
+
template <>
|
|
789
|
+
struct type_caster<trimkit::BoxQueriesArgument> : passed_through<trimkit::BoxQueriesArgument, box_queries_shown> {};
|
|
790
|
+
|
|
722
791
|
// `MeshArgument` shows up as the `Mesh` alias
|
|
723
792
|
struct mesh_shown {
|
|
724
793
|
// NOLINTNEXTLINE(readability-identifier-naming): the name nanobind reads
|