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.
Files changed (739) hide show
  1. {trimkit-0.1.0 → trimkit-0.2.1}/PKG-INFO +49 -29
  2. {trimkit-0.1.0 → trimkit-0.2.1}/README.md +48 -28
  3. {trimkit-0.1.0 → trimkit-0.2.1}/bench/versus.py +1 -1
  4. {trimkit-0.1.0 → trimkit-0.2.1}/pyproject.toml +1 -1
  5. {trimkit-0.1.0 → trimkit-0.2.1}/src/bvh.cpp +87 -31
  6. {trimkit-0.1.0 → trimkit-0.2.1}/src/collision.cpp +43 -2
  7. {trimkit-0.1.0 → trimkit-0.2.1}/src/common.hpp +30 -0
  8. {trimkit-0.1.0 → trimkit-0.2.1}/src/numpy.hpp +69 -0
  9. {trimkit-0.1.0 → trimkit-0.2.1}/src/trimkit/__init__.pyi +47 -9
  10. {trimkit-0.1.0 → trimkit-0.2.1}/tests/golden.json +1 -1
  11. {trimkit-0.1.0 → trimkit-0.2.1}/tests/helpers.py +1 -1
  12. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_bvh.py +49 -10
  13. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_golden.py +1 -1
  14. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_invariants.py +86 -9
  15. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_threads.py +1 -1
  16. {trimkit-0.1.0 → trimkit-0.2.1}/uv.lock +1 -1
  17. {trimkit-0.1.0 → trimkit-0.2.1}/.gitattributes +0 -0
  18. {trimkit-0.1.0 → trimkit-0.2.1}/.gitignore +0 -0
  19. {trimkit-0.1.0 → trimkit-0.2.1}/LICENSE +0 -0
  20. {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/results/convex_accuracy.md +0 -0
  21. {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/results/cull.md +0 -0
  22. {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/results/no_cull.md +0 -0
  23. {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/trimkit_robot.py +0 -0
  24. {trimkit-0.1.0 → trimkit-0.2.1}/bench/collision/versus_robots.py +0 -0
  25. {trimkit-0.1.0 → trimkit-0.2.1}/bench/compare.py +0 -0
  26. {trimkit-0.1.0 → trimkit-0.2.1}/bench/run.py +0 -0
  27. {trimkit-0.1.0 → trimkit-0.2.1}/bench/scene.py +0 -0
  28. {trimkit-0.1.0 → trimkit-0.2.1}/docker/Dockerfile +0 -0
  29. {trimkit-0.1.0 → trimkit-0.2.1}/docker/Dockerfile.dockerignore +0 -0
  30. {trimkit-0.1.0 → trimkit-0.2.1}/docs/trace.md +0 -0
  31. {trimkit-0.1.0 → trimkit-0.2.1}/examples/ur10.py +0 -0
  32. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/atheris_bindings.py +0 -0
  33. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/bvh.cpp +0 -0
  34. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/collision.cpp +0 -0
  35. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/draco.cpp +0 -0
  36. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/draco_roundtrip.cpp +0 -0
  37. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/draco_seeds.cpp +0 -0
  38. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/earcut.cpp +0 -0
  39. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/meshoptimizer.cpp +0 -0
  40. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/parallel.cpp +0 -0
  41. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/svgpath.cpp +0 -0
  42. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/svgpath_format.cpp +0 -0
  43. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/vhacd.cpp +0 -0
  44. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/vulkan.cpp +0 -0
  45. {trimkit-0.1.0 → trimkit-0.2.1}/fuzz/xatlas.cpp +0 -0
  46. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/__main__.py +0 -0
  47. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/api.py +0 -0
  48. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/backend.py +0 -0
  49. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/builder.py +0 -0
  50. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/check_wheel.py +0 -0
  51. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/clang-format.yaml +0 -0
  52. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/clang-tidy.yaml +0 -0
  53. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/distro.py +0 -0
  54. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/licenses.py +0 -0
  55. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/pgo.py +0 -0
  56. {trimkit-0.1.0 → trimkit-0.2.1}/scripts/vendor.py +0 -0
  57. {trimkit-0.1.0 → trimkit-0.2.1}/src/cgroup.hpp +0 -0
  58. {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/boost/assert.hpp +0 -0
  59. {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/boost/math/constants/constants.hpp +0 -0
  60. {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/coal/config.hh +0 -0
  61. {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/coal/deprecated.hh +0 -0
  62. {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/coal/tracy.hh +0 -0
  63. {trimkit-0.1.0 → trimkit-0.2.1}/src/config/coal/coal/warning.hh +0 -0
  64. {trimkit-0.1.0 → trimkit-0.2.1}/src/config/draco/draco_features.h +0 -0
  65. {trimkit-0.1.0 → trimkit-0.2.1}/src/draco.cpp +0 -0
  66. {trimkit-0.1.0 → trimkit-0.2.1}/src/earcut.cpp +0 -0
  67. {trimkit-0.1.0 → trimkit-0.2.1}/src/extension.map +0 -0
  68. {trimkit-0.1.0 → trimkit-0.2.1}/src/meshoptimizer.cpp +0 -0
  69. {trimkit-0.1.0 → trimkit-0.2.1}/src/parallel.hpp +0 -0
  70. {trimkit-0.1.0 → trimkit-0.2.1}/src/svg.cpp +0 -0
  71. {trimkit-0.1.0 → trimkit-0.2.1}/src/svgpath.hpp +0 -0
  72. {trimkit-0.1.0 → trimkit-0.2.1}/src/tinybvh.cpp +0 -0
  73. {trimkit-0.1.0 → trimkit-0.2.1}/src/trimkit/exchange.pyi +0 -0
  74. {trimkit-0.1.0 → trimkit-0.2.1}/src/trimkit/py.typed +0 -0
  75. {trimkit-0.1.0 → trimkit-0.2.1}/src/trimkit.cpp +0 -0
  76. {trimkit-0.1.0 → trimkit-0.2.1}/src/vhacd.cpp +0 -0
  77. {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/layout.comp +0 -0
  78. {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/scene.hpp +0 -0
  79. {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/spirv.hpp +0 -0
  80. {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/trace.comp +0 -0
  81. {trimkit-0.1.0 → trimkit-0.2.1}/src/vulkan/vulkan.hpp +0 -0
  82. {trimkit-0.1.0 → trimkit-0.2.1}/src/windows.hpp +0 -0
  83. {trimkit-0.1.0 → trimkit-0.2.1}/src/xatlas.cpp +0 -0
  84. {trimkit-0.1.0 → trimkit-0.2.1}/tests/conftest.py +0 -0
  85. {trimkit-0.1.0 → trimkit-0.2.1}/tests/memory_limit.py +0 -0
  86. {trimkit-0.1.0 → trimkit-0.2.1}/tests/models/cycloidal.npz +0 -0
  87. {trimkit-0.1.0 → trimkit-0.2.1}/tests/svg_reference.py +0 -0
  88. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_collision.py +0 -0
  89. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_draco.py +0 -0
  90. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_earcut.py +0 -0
  91. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_gpu.py +0 -0
  92. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_meshoptimizer.py +0 -0
  93. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_scheduler.py +0 -0
  94. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_svg.py +0 -0
  95. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_svg_grammar.py +0 -0
  96. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_vhacd.py +0 -0
  97. {trimkit-0.1.0 → trimkit-0.2.1}/tests/test_xatlas.py +0 -0
  98. {trimkit-0.1.0 → trimkit-0.2.1}/trimkit.toml +0 -0
  99. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/LICENSE +0 -0
  100. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/AABB.h +0 -0
  101. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/BV.h +0 -0
  102. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/BV_node.h +0 -0
  103. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/OBB.h +0 -0
  104. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/OBBRSS.h +0 -0
  105. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/RSS.h +0 -0
  106. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/kDOP.h +0 -0
  107. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BV/kIOS.h +0 -0
  108. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BVH/BVH_front.h +0 -0
  109. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BVH/BVH_internal.h +0 -0
  110. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BVH/BVH_model.h +0 -0
  111. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/BVH/BVH_utility.h +0 -0
  112. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/alloca.h +0 -0
  113. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/broadphase_callbacks.h +0 -0
  114. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/broadphase_collision_manager.h +0 -0
  115. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/broadphase_dynamic_AABB_tree_array-inl.h +0 -0
  116. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/broadphase_dynamic_AABB_tree_array.h +0 -0
  117. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/hierarchy_tree_array-inl.h +0 -0
  118. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/hierarchy_tree_array.h +0 -0
  119. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/morton-inl.h +0 -0
  120. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/morton.h +0 -0
  121. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/node_base_array-inl.h +0 -0
  122. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/broadphase/detail/node_base_array.h +0 -0
  123. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/collision_data.h +0 -0
  124. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/collision_object.h +0 -0
  125. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/collision_utility.h +0 -0
  126. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/contact_patch/polygon_convex_hull.h +0 -0
  127. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/data_types.h +0 -0
  128. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/fwd.hh +0 -0
  129. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/hfield.h +0 -0
  130. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/BV_fitter.h +0 -0
  131. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/BV_splitter.h +0 -0
  132. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/intersect.h +0 -0
  133. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/intersect.hxx +0 -0
  134. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/shape_shape_func.h +0 -0
  135. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/tools.h +0 -0
  136. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal.h +0 -0
  137. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_base.h +0 -0
  138. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_bvh_shape.h +0 -0
  139. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_bvhs.h +0 -0
  140. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_hfield_shape.h +0 -0
  141. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_setup.h +0 -0
  142. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_node_shapes.h +0 -0
  143. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/internal/traversal_recurse.h +0 -0
  144. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/logging.h +0 -0
  145. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/math/transform.h +0 -0
  146. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/gjk.h +0 -0
  147. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/minkowski_difference.h +0 -0
  148. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/narrowphase.h +0 -0
  149. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/narrowphase_defaults.h +0 -0
  150. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/support_data.h +0 -0
  151. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/narrowphase/support_functions.h +0 -0
  152. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/convex.h +0 -0
  153. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/convex.hxx +0 -0
  154. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/geometric_shapes.h +0 -0
  155. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/geometric_shapes.hxx +0 -0
  156. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/geometric_shapes_traits.h +0 -0
  157. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shape/geometric_shapes_utility.h +0 -0
  158. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/shared_ptr_comparison.h +0 -0
  159. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/third_party/boost/core/data.hpp +0 -0
  160. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/third_party/boost/core/detail/assert.hpp +0 -0
  161. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/third_party/boost/core/span.hpp +0 -0
  162. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/include/coal/timings.h +0 -0
  163. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/AABB.cpp +0 -0
  164. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/OBB.cpp +0 -0
  165. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/OBBRSS.cpp +0 -0
  166. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/RSS.cpp +0 -0
  167. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/kDOP.cpp +0 -0
  168. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BV/kIOS.cpp +0 -0
  169. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BVH/BVH_model.cpp +0 -0
  170. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BVH/BVH_utility.cpp +0 -0
  171. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BVH/BV_fitter.cpp +0 -0
  172. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/BVH/BV_splitter.cpp +0 -0
  173. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/broadphase/broadphase_collision_manager.cpp +0 -0
  174. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/broadphase/broadphase_dynamic_AABB_tree_array.cpp +0 -0
  175. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/broadphase/detail/morton.cpp +0 -0
  176. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_data.cpp +0 -0
  177. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_node.cpp +0 -0
  178. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_node.h +0 -0
  179. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_object.cpp +0 -0
  180. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/collision_utility.cpp +0 -0
  181. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/contact_patch/polygon_convex_hull.cpp +0 -0
  182. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/distance/triangle_triangle.cpp +0 -0
  183. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/hfield.cpp +0 -0
  184. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/intersect.cpp +0 -0
  185. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/math/transform.cpp +0 -0
  186. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/narrowphase/details.h +0 -0
  187. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/narrowphase/gjk.cpp +0 -0
  188. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/narrowphase/minkowski_difference.cpp +0 -0
  189. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/narrowphase/support_functions.cpp +0 -0
  190. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/shape/geometric_shapes.cpp +0 -0
  191. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/shape/geometric_shapes_utility.cpp +0 -0
  192. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/coal/src/traversal/traversal_recurse.cpp +0 -0
  193. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/LICENSE +0 -0
  194. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_octahedron_transform.cc +0 -0
  195. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_octahedron_transform.h +0 -0
  196. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_quantization_transform.cc +0 -0
  197. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_quantization_transform.h +0 -0
  198. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_transform.cc +0 -0
  199. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_transform.h +0 -0
  200. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_transform_data.h +0 -0
  201. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/attribute_transform_type.h +0 -0
  202. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/geometry_attribute.cc +0 -0
  203. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/geometry_attribute.h +0 -0
  204. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/geometry_indices.h +0 -0
  205. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/point_attribute.cc +0 -0
  206. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/attributes/point_attribute.h +0 -0
  207. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_decoder.cc +0 -0
  208. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_decoder.h +0 -0
  209. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_decoder_interface.h +0 -0
  210. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_encoder.cc +0 -0
  211. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/attributes_encoder.h +0 -0
  212. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/linear_sequencer.h +0 -0
  213. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/mesh_attribute_indices_encoding_data.h +0 -0
  214. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/normal_compression_utils.h +0 -0
  215. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/points_sequencer.h +0 -0
  216. {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
  217. {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
  218. {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
  219. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h +0 -0
  220. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h +0 -0
  221. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h +0 -0
  222. {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
  223. {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
  224. {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
  225. {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
  226. {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
  227. {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
  228. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_decoder.h +0 -0
  229. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h +0 -0
  230. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h +0 -0
  231. {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
  232. {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
  233. {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
  234. {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
  235. {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
  236. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h +0 -0
  237. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h +0 -0
  238. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h +0 -0
  239. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h +0 -0
  240. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h +0 -0
  241. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h +0 -0
  242. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h +0 -0
  243. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc +0 -0
  244. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h +0 -0
  245. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h +0 -0
  246. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h +0 -0
  247. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h +0 -0
  248. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h +0 -0
  249. {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
  250. {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
  251. {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
  252. {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
  253. {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
  254. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h +0 -0
  255. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h +0 -0
  256. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h +0 -0
  257. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoder.cc +0 -0
  258. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoder.h +0 -0
  259. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoders_controller.cc +0 -0
  260. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_decoders_controller.h +0 -0
  261. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoder.cc +0 -0
  262. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoder.h +0 -0
  263. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoders_controller.cc +0 -0
  264. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_attribute_encoders_controller.h +0 -0
  265. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_decoder.cc +0 -0
  266. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_decoder.h +0 -0
  267. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_encoder.cc +0 -0
  268. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_integer_attribute_encoder.h +0 -0
  269. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_decoder.cc +0 -0
  270. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_decoder.h +0 -0
  271. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_encoder.cc +0 -0
  272. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_normal_attribute_encoder.h +0 -0
  273. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_decoder.cc +0 -0
  274. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_decoder.h +0 -0
  275. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_encoder.cc +0 -0
  276. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/attributes/sequential_quantization_attribute_encoder.h +0 -0
  277. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/bit_coders/rans_bit_decoder.cc +0 -0
  278. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/bit_coders/rans_bit_decoder.h +0 -0
  279. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/bit_coders/rans_bit_encoder.cc +0 -0
  280. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/bit_coders/rans_bit_encoder.h +0 -0
  281. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/compression_shared.h +0 -0
  282. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/decoder_options.h +0 -0
  283. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/draco_options.h +0 -0
  284. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/encoder_options.h +0 -0
  285. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/config/encoding_features.h +0 -0
  286. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/decode.cc +0 -0
  287. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/decode.h +0 -0
  288. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/encode_base.h +0 -0
  289. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/ans.h +0 -0
  290. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/rans_symbol_coding.h +0 -0
  291. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/rans_symbol_decoder.h +0 -0
  292. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/rans_symbol_encoder.h +0 -0
  293. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/shannon_entropy.cc +0 -0
  294. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/shannon_entropy.h +0 -0
  295. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/symbol_decoding.cc +0 -0
  296. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/symbol_decoding.h +0 -0
  297. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/symbol_encoding.cc +0 -0
  298. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/entropy/symbol_encoding.h +0 -0
  299. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/expert_encode.cc +0 -0
  300. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/expert_encode.h +0 -0
  301. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_decoder.cc +0 -0
  302. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_decoder.h +0 -0
  303. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder.cc +0 -0
  304. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder.h +0 -0
  305. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.cc +0 -0
  306. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.h +0 -0
  307. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h +0 -0
  308. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder.cc +0 -0
  309. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder.h +0 -0
  310. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.cc +0 -0
  311. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.h +0 -0
  312. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h +0 -0
  313. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_shared.h +0 -0
  314. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h +0 -0
  315. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h +0 -0
  316. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h +0 -0
  317. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h +0 -0
  318. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h +0 -0
  319. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h +0 -0
  320. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_encoder.cc +0 -0
  321. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_encoder.h +0 -0
  322. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_sequential_decoder.cc +0 -0
  323. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_sequential_decoder.h +0 -0
  324. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_sequential_encoder.cc +0 -0
  325. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/mesh_sequential_encoder.h +0 -0
  326. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/depth_first_traverser.h +0 -0
  327. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/max_prediction_degree_traverser.h +0 -0
  328. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/mesh_attribute_indices_encoding_observer.h +0 -0
  329. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/mesh_traversal_sequencer.h +0 -0
  330. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/mesh/traverser/traverser_base.h +0 -0
  331. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_decoder.cc +0 -0
  332. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_decoder.h +0 -0
  333. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_encode_stats.h +0 -0
  334. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_encoder.cc +0 -0
  335. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/compression/point_cloud/point_cloud_encoder.h +0 -0
  336. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/bit_utils.cc +0 -0
  337. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/bit_utils.h +0 -0
  338. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/bounding_box.h +0 -0
  339. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/data_buffer.cc +0 -0
  340. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/data_buffer.h +0 -0
  341. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/decoder_buffer.cc +0 -0
  342. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/decoder_buffer.h +0 -0
  343. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/divide.cc +0 -0
  344. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/divide.h +0 -0
  345. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/draco_index_type.h +0 -0
  346. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/draco_index_type_vector.h +0 -0
  347. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/draco_types.cc +0 -0
  348. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/draco_types.h +0 -0
  349. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/encoder_buffer.cc +0 -0
  350. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/encoder_buffer.h +0 -0
  351. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/hash_utils.cc +0 -0
  352. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/hash_utils.h +0 -0
  353. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/int_utils.h +0 -0
  354. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/macros.h +0 -0
  355. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/math_utils.h +0 -0
  356. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/options.cc +0 -0
  357. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/options.h +0 -0
  358. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/quantization_utils.cc +0 -0
  359. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/quantization_utils.h +0 -0
  360. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/status.cc +0 -0
  361. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/status.h +0 -0
  362. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/status_or.h +0 -0
  363. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/varint_decoding.h +0 -0
  364. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/varint_encoding.h +0 -0
  365. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/core/vector_d.h +0 -0
  366. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/corner_table.cc +0 -0
  367. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/corner_table.h +0 -0
  368. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/corner_table_iterators.h +0 -0
  369. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh.cc +0 -0
  370. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh.h +0 -0
  371. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh_attribute_corner_table.cc +0 -0
  372. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh_attribute_corner_table.h +0 -0
  373. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh_misc_functions.cc +0 -0
  374. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/mesh_misc_functions.h +0 -0
  375. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/mesh/valence_cache.h +0 -0
  376. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/geometry_metadata.cc +0 -0
  377. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/geometry_metadata.h +0 -0
  378. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata.cc +0 -0
  379. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata.h +0 -0
  380. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata_decoder.cc +0 -0
  381. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata_decoder.h +0 -0
  382. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata_encoder.cc +0 -0
  383. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/metadata/metadata_encoder.h +0 -0
  384. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/point_cloud/point_cloud.cc +0 -0
  385. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/draco/src/draco/point_cloud/point_cloud.h +0 -0
  386. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/dragonbox/LICENSE-Apache2-LLVM +0 -0
  387. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/dragonbox/LICENSE-Boost +0 -0
  388. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/dragonbox/include/dragonbox/dragonbox.h +0 -0
  389. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/earcut/LICENSE +0 -0
  390. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/earcut/include/mapbox/earcut.hpp +0 -0
  391. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/COPYING.APACHE +0 -0
  392. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/COPYING.BSD +0 -0
  393. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/COPYING.MPL2 +0 -0
  394. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Cholesky +0 -0
  395. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Core +0 -0
  396. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Geometry +0 -0
  397. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Householder +0 -0
  398. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Jacobi +0 -0
  399. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/LU +0 -0
  400. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/QR +0 -0
  401. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/SVD +0 -0
  402. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/Version +0 -0
  403. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Cholesky/BunchKaufman.h +0 -0
  404. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +0 -0
  405. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Cholesky/LDLT.h +0 -0
  406. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Cholesky/LLT.h +0 -0
  407. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ApproxComparisons.h +0 -0
  408. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ArithmeticSequence.h +0 -0
  409. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Array.h +0 -0
  410. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ArrayBase.h +0 -0
  411. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ArrayWrapper.h +0 -0
  412. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Assign.h +0 -0
  413. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/AssignEvaluator.h +0 -0
  414. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/BandMatrix.h +0 -0
  415. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Block.h +0 -0
  416. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CommaInitializer.h +0 -0
  417. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ConcatOp.h +0 -0
  418. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ConditionEstimator.h +0 -0
  419. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CoreEvaluators.h +0 -0
  420. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CoreIterators.h +0 -0
  421. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseBinaryOp.h +0 -0
  422. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseNullaryOp.h +0 -0
  423. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseTernaryOp.h +0 -0
  424. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseUnaryOp.h +0 -0
  425. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/CwiseUnaryView.h +0 -0
  426. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DenseBase.h +0 -0
  427. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DenseCoeffsBase.h +0 -0
  428. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DenseStorage.h +0 -0
  429. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DeviceWrapper.h +0 -0
  430. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Diagonal.h +0 -0
  431. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DiagonalMatrix.h +0 -0
  432. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/DiagonalProduct.h +0 -0
  433. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Dot.h +0 -0
  434. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/EigenBase.h +0 -0
  435. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Fill.h +0 -0
  436. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/FindCoeff.h +0 -0
  437. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/GeneralProduct.h +0 -0
  438. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/GenericPacketMath.h +0 -0
  439. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/GlobalFunctions.h +0 -0
  440. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/IO.h +0 -0
  441. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/IndexedView.h +0 -0
  442. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/InnerProduct.h +0 -0
  443. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/InternalHeaderCheck.h +0 -0
  444. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Inverse.h +0 -0
  445. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Map.h +0 -0
  446. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MapBase.h +0 -0
  447. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MathFunctions.h +0 -0
  448. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MathFunctionsImpl.h +0 -0
  449. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Matrix.h +0 -0
  450. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MatrixBase.h +0 -0
  451. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/MatrixNorms.h +0 -0
  452. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/NestByValue.h +0 -0
  453. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/NoAlias.h +0 -0
  454. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/NumTraits.h +0 -0
  455. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/PartialReduxEvaluator.h +0 -0
  456. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/PermutationMatrix.h +0 -0
  457. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/PlainObjectBase.h +0 -0
  458. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Predicator.h +0 -0
  459. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Product.h +0 -0
  460. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ProductEvaluators.h +0 -0
  461. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Random.h +0 -0
  462. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/RandomImpl.h +0 -0
  463. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/RankRevealingBase.h +0 -0
  464. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/RealView.h +0 -0
  465. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Redux.h +0 -0
  466. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Ref.h +0 -0
  467. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Replicate.h +0 -0
  468. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Reshaped.h +0 -0
  469. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ReturnByValue.h +0 -0
  470. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Reverse.h +0 -0
  471. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SafeScaling.h +0 -0
  472. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/ScaledPermutationMatrix.h +0 -0
  473. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Select.h +0 -0
  474. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SelfAdjointView.h +0 -0
  475. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +0 -0
  476. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +0 -0
  477. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Solve.h +0 -0
  478. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SolveTriangular.h +0 -0
  479. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/SolverBase.h +0 -0
  480. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/StableNorm.h +0 -0
  481. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/StlIterators.h +0 -0
  482. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Stride.h +0 -0
  483. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/StructuredBindings.h +0 -0
  484. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Swap.h +0 -0
  485. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Transpose.h +0 -0
  486. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Transpositions.h +0 -0
  487. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/TriangularInPlace.h +0 -0
  488. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/TriangularMatrix.h +0 -0
  489. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/VectorBlock.h +0 -0
  490. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/VectorwiseOp.h +0 -0
  491. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/Visitor.h +0 -0
  492. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/BFloat16.h +0 -0
  493. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +0 -0
  494. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathComplex.h +0 -0
  495. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathDoubleWord.h +0 -0
  496. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFrexpLdexp.h +0 -0
  497. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +0 -0
  498. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +0 -0
  499. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathPolynomials.h +0 -0
  500. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathPow.h +0 -0
  501. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/GenericPacketMathTrig.h +0 -0
  502. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/Half.h +0 -0
  503. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/Default/Settings.h +0 -0
  504. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/Complex.h +0 -0
  505. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +0 -0
  506. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +0 -0
  507. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +0 -0
  508. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/PacketMathBF16.h +0 -0
  509. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +0 -0
  510. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +0 -0
  511. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/Complex.h +0 -0
  512. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +0 -0
  513. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +0 -0
  514. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/Reductions.h +0 -0
  515. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +0 -0
  516. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +0 -0
  517. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/BinaryFunctors.h +0 -0
  518. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/NullaryFunctors.h +0 -0
  519. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/StlFunctors.h +0 -0
  520. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/TernaryFunctors.h +0 -0
  521. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/functors/UnaryFunctors.h +0 -0
  522. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +0 -0
  523. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +0 -0
  524. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +0 -0
  525. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +0 -0
  526. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/Parallelizer.h +0 -0
  527. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +0 -0
  528. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +0 -0
  529. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/SelfadjointProduct.h +0 -0
  530. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +0 -0
  531. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +0 -0
  532. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +0 -0
  533. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +0 -0
  534. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/products/TriangularSolverVector.h +0 -0
  535. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/AOCL_Support.h +0 -0
  536. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Assert.h +0 -0
  537. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/BlasTypes.h +0 -0
  538. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/BlasUtil.h +0 -0
  539. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ConfigureVectorization.h +0 -0
  540. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Constants.h +0 -0
  541. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +0 -0
  542. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/EmulateArray.h +0 -0
  543. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ForwardDeclarations.h +0 -0
  544. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/IndexedViewHelper.h +0 -0
  545. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/IntegralConstant.h +0 -0
  546. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/LruCache.h +0 -0
  547. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/MKL_support.h +0 -0
  548. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Macros.h +0 -0
  549. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Memory.h +0 -0
  550. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Meta.h +0 -0
  551. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/MoreMeta.h +0 -0
  552. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +0 -0
  553. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ReshapedHelper.h +0 -0
  554. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/Serializer.h +0 -0
  555. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/ShapeChecks.h +0 -0
  556. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/StaticAssert.h +0 -0
  557. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/SymbolicIndex.h +0 -0
  558. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Core/util/XprHelper.h +0 -0
  559. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/AlignedBox.h +0 -0
  560. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/AngleAxis.h +0 -0
  561. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/EulerAngles.h +0 -0
  562. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Homogeneous.h +0 -0
  563. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Hyperplane.h +0 -0
  564. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +0 -0
  565. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/OrthoMethods.h +0 -0
  566. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/ParametrizedLine.h +0 -0
  567. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Quaternion.h +0 -0
  568. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Rotation2D.h +0 -0
  569. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/RotationBase.h +0 -0
  570. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Scaling.h +0 -0
  571. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Transform.h +0 -0
  572. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Translation.h +0 -0
  573. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/Umeyama.h +0 -0
  574. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +0 -0
  575. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Householder/BlockHouseholder.h +0 -0
  576. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Householder/Householder.h +0 -0
  577. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Householder/HouseholderSequence.h +0 -0
  578. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Householder/InternalHeaderCheck.h +0 -0
  579. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +0 -0
  580. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/Jacobi/Jacobi.h +0 -0
  581. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/Determinant.h +0 -0
  582. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/FullPivLU.h +0 -0
  583. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/InternalHeaderCheck.h +0 -0
  584. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/InverseImpl.h +0 -0
  585. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/PartialPivLU.h +0 -0
  586. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/LU/arch/InverseSize4.h +0 -0
  587. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/ColPivHouseholderQR.h +0 -0
  588. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +0 -0
  589. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/FullPivHouseholderQR.h +0 -0
  590. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/HouseholderQR.h +0 -0
  591. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/InternalHeaderCheck.h +0 -0
  592. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/QR/RandColPivHouseholderQR.h +0 -0
  593. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/BDCSVD.h +0 -0
  594. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/BDCSVDImpl.h +0 -0
  595. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/InternalHeaderCheck.h +0 -0
  596. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/JacobiSVD.h +0 -0
  597. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/SVDBase.h +0 -0
  598. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/SVD/UpperBidiagonalization.h +0 -0
  599. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +0 -0
  600. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +0 -0
  601. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/BlockMethods.inc +0 -0
  602. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +0 -0
  603. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.inc +0 -0
  604. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/IndexedViewMethods.inc +0 -0
  605. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +0 -0
  606. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +0 -0
  607. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/eigen/Eigen/src/plugins/ReshapedMethods.inc +0 -0
  608. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/LICENSE-MIT +0 -0
  609. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/ascii_number.h +0 -0
  610. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/bigint.h +0 -0
  611. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/constexpr_feature_detect.h +0 -0
  612. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/decimal_to_binary.h +0 -0
  613. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/digit_comparison.h +0 -0
  614. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/fast_float.h +0 -0
  615. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/fast_table.h +0 -0
  616. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/float_common.h +0 -0
  617. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/fast_float/include/fast_float/parse_number.h +0 -0
  618. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/meshoptimizer/LICENSE.md +0 -0
  619. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/meshoptimizer/src/meshoptimizer.h +0 -0
  620. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/meshoptimizer/src/simplifier.cpp +0 -0
  621. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/LICENSE +0 -0
  622. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/cmake/darwin-ld-cpython.sym +0 -0
  623. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/eigen/dense.h +0 -0
  624. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/eigen/sparse.h +0 -0
  625. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/eigen/tensor.h +0 -0
  626. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/eval.h +0 -0
  627. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/intrusive/counter.h +0 -0
  628. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/intrusive/counter.inl +0 -0
  629. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/intrusive/ref.h +0 -0
  630. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/make_iterator.h +0 -0
  631. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nanobind.h +0 -0
  632. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_accessor.h +0 -0
  633. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_attr.h +0 -0
  634. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_backend.h +0 -0
  635. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_backend_slots.h +0 -0
  636. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_call.h +0 -0
  637. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_cast.h +0 -0
  638. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_class.h +0 -0
  639. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_defs.h +0 -0
  640. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_descr.h +0 -0
  641. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_error.h +0 -0
  642. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_func.h +0 -0
  643. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_misc.h +0 -0
  644. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_platform.h +0 -0
  645. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_python.h +0 -0
  646. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_traits.h +0 -0
  647. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_tuple.h +0 -0
  648. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/nb_types.h +0 -0
  649. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/ndarray.h +0 -0
  650. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/operators.h +0 -0
  651. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/array.h +0 -0
  652. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/bind_map.h +0 -0
  653. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/bind_vector.h +0 -0
  654. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/chrono.h +0 -0
  655. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/complex.h +0 -0
  656. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_array.h +0 -0
  657. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_dict.h +0 -0
  658. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_list.h +0 -0
  659. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_optional.h +0 -0
  660. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/nb_set.h +0 -0
  661. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/detail/traits.h +0 -0
  662. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/filesystem.h +0 -0
  663. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/function.h +0 -0
  664. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/list.h +0 -0
  665. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/map.h +0 -0
  666. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/optional.h +0 -0
  667. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/pair.h +0 -0
  668. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/set.h +0 -0
  669. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/shared_ptr.h +0 -0
  670. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/string.h +0 -0
  671. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/string_view.h +0 -0
  672. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/tuple.h +0 -0
  673. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/unique_ptr.h +0 -0
  674. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/unordered_map.h +0 -0
  675. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/unordered_set.h +0 -0
  676. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/variant.h +0 -0
  677. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/vector.h +0 -0
  678. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/stl/wstring.h +0 -0
  679. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/trampoline.h +0 -0
  680. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/include/nanobind/typing.h +0 -0
  681. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/__init__.py +0 -0
  682. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/__main__.py +0 -0
  683. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/buffer.h +0 -0
  684. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/common.cpp +0 -0
  685. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/error.cpp +0 -0
  686. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/hash.h +0 -0
  687. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/implicit.cpp +0 -0
  688. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_backend.cpp +0 -0
  689. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_combined.cpp +0 -0
  690. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_datetime.cpp +0 -0
  691. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_enum.cpp +0 -0
  692. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_ft.cpp +0 -0
  693. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_ft.h +0 -0
  694. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_func.cpp +0 -0
  695. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_internals.cpp +0 -0
  696. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_internals.h +0 -0
  697. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_ndarray.cpp +0 -0
  698. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_static_property.cpp +0 -0
  699. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/nb_type.cpp +0 -0
  700. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/stubgen.py +0 -0
  701. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/trampoline.cpp +0 -0
  702. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/nanobind/src/version.py +0 -0
  703. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/coal-bvh-bvh-performance.patch +0 -0
  704. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/draco-symbol-encoding.patch +0 -0
  705. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/earcut-convex-ring.patch +0 -0
  706. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/earcut-hole-bridge-blocks.patch +0 -0
  707. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/tinybvh-flat-node-bins.patch +0 -0
  708. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/vhacd-atomic-hull-counter.patch +0 -0
  709. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/vhacd-empty-volume.patch +0 -0
  710. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/vhacd-parallel-for.patch +0 -0
  711. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/patches/xatlas-lost-wakeup.patch +0 -0
  712. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/LICENSE +0 -0
  713. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/include/tsl/robin_growth_policy.h +0 -0
  714. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/include/tsl/robin_hash.h +0 -0
  715. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/include/tsl/robin_map.h +0 -0
  716. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/robin_map/include/tsl/robin_set.h +0 -0
  717. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/tinybvh/LICENSE +0 -0
  718. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/tinybvh/tiny_bvh.h +0 -0
  719. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/tinybvh/tiny_bvh_base.h +0 -0
  720. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vhacd/LICENSE +0 -0
  721. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vhacd/include/VHACD.h +0 -0
  722. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/LICENSE.md +0 -0
  723. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_av1std.h +0 -0
  724. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_av1std_decode.h +0 -0
  725. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_av1std_encode.h +0 -0
  726. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h264std.h +0 -0
  727. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h264std_decode.h +0 -0
  728. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h264std_encode.h +0 -0
  729. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h265std.h +0 -0
  730. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h265std_decode.h +0 -0
  731. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_h265std_encode.h +0 -0
  732. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_vp9std.h +0 -0
  733. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codec_vp9std_decode.h +0 -0
  734. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vk_video/vulkan_video_codecs_common.h +0 -0
  735. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vulkan/vk_platform.h +0 -0
  736. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/vulkan_headers/include/vulkan/vulkan_core.h +0 -0
  737. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/xatlas/LICENSE +0 -0
  738. {trimkit-0.1.0 → trimkit-0.2.1}/vendor/xatlas/source/xatlas/xatlas.cpp +0 -0
  739. {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.0
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.intersect` | Every box overlapping each query box, touching included.<br>`pairs = tree.intersect(np.array([[[0.5, 0.5], [2.5, 2.5]]]))` |
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.intersect` | Every box overlapping each query box, touching included.<br>`pairs = tree.intersect(np.array([[[0.5, 0.5], [2.5, 2.5]]]))` |
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
@@ -148,7 +148,7 @@ row(
148
148
  "trimkit.Boxes",
149
149
  "rtree",
150
150
  rtree_both,
151
- lambda: trimkit.Boxes(bounds).intersect(queries),
151
+ lambda: trimkit.Boxes(bounds).intersection(queries),
152
152
  repeat=2,
153
153
  note="build 100k boxes, query 20k",
154
154
  )
@@ -8,7 +8,7 @@ backend-path = ["scripts"]
8
8
 
9
9
  [project]
10
10
  name = "trimkit"
11
- version = "0.1.0"
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
- trimkit::Out<std::int64_t> intersect(const BoundsArg& queries_argument) const {
800
- const Bounds queries = trimkit::read(queries_argument, "queries");
801
- if (dimension_of(queries) != dimension_) {
802
- trimkit::value_error("queries must have the boxes' dimension, " + std::to_string(dimension_));
803
- }
804
- const std::size_t n = queries.shape(0);
805
- const std::vector<Vec> boxes = corners_of(queries, "queries");
806
- // [query, box] rows, in query order
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
- n, &pairs, [&](std::size_t begin, std::size_t end, std::vector<std::int64_t>& rows) {
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(boxes[2 * q], boxes[(2 * q) + 1], stack,
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
- return trimkit::to_numpy_rows<std::int64_t>(trimkit::gathered_rows(pairs), {2});
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 as 3D points, each pair checked to be ordered
848
- std::vector<Vec> corners_of(const trimkit::In<double, -1, 2, -1>& bounds, const char* name) const {
849
- const std::size_t n = bounds.shape(0);
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
- nb::class_<RayScene>(m, "RayScene",
926
- R"(Meshes, each built once into a double precision BVH, and the only
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
- nb::class_<Boxes>(m, "Boxes",
1078
- R"(Axis-aligned boxes built into a BVH for overlap queries: a static,
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("intersect", &Boxes::intersect, nb::arg("queries"),
1135
- R"(Every box overlapping each query box, touching included.
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
- Each query's minimum and maximum corner, in the boxes' dimension.
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
- pairs : (k, 2) int64
1145
- Rows of [query, box] for every overlap, sorted by query
1146
- and then box.
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
- >>> pairs = tree.intersect(np.array([[[0.5, 0.5], [2.5, 2.5]]]))
1154
- >>> pairs.tolist()
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
- nb::class_<CollisionScene>(m, "CollisionScene",
597
- R"(Meshes to place and query against each other. A scene never changes:
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