pymomentum-cpu 0.1.93.post0__cp312-cp312-macosx_14_0_arm64.whl
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.
- include/axel/BoundingBox.h +59 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +87 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/DualContouring.h +79 -0
- include/axel/KdTree.h +208 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +248 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +117 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +97 -0
- include/momentum/character/blend_shape_base.h +86 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +262 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +94 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/mesh_state.h +71 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +207 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +227 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
- include/momentum/character_sequence_solver/sequence_solver.h +155 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +158 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +117 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +92 -0
- include/momentum/character_solver/collision_error_function_stateless.h +75 -0
- include/momentum/character_solver/constraint_error_function-inl.h +324 -0
- include/momentum/character_solver/constraint_error_function.h +248 -0
- include/momentum/character_solver/distance_error_function.h +77 -0
- include/momentum/character_solver/error_function_utils.h +60 -0
- include/momentum/character_solver/fixed_axis_error_function.h +139 -0
- include/momentum/character_solver/fwd.h +943 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
- include/momentum/character_solver/height_error_function.h +176 -0
- include/momentum/character_solver/joint_to_joint_distance_error_function.h +111 -0
- include/momentum/character_solver/limit_error_function.h +57 -0
- include/momentum/character_solver/model_parameters_error_function.h +64 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
- include/momentum/character_solver/pose_prior_error_function.h +80 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +93 -0
- include/momentum/character_solver/simd_collision_error_function.h +99 -0
- include/momentum/character_solver/simd_normal_error_function.h +157 -0
- include/momentum/character_solver/simd_plane_error_function.h +164 -0
- include/momentum/character_solver/simd_position_error_function.h +165 -0
- include/momentum/character_solver/skeleton_error_function.h +151 -0
- include/momentum/character_solver/skeleton_solver_function.h +94 -0
- include/momentum/character_solver/skinned_locator_error_function.h +166 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +119 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +80 -0
- include/momentum/character_solver/vertex_error_function.h +155 -0
- include/momentum/character_solver/vertex_projection_error_function.h +117 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
- include/momentum/common/aligned.h +155 -0
- include/momentum/common/checks.h +27 -0
- include/momentum/common/exception.h +70 -0
- include/momentum/common/filesystem.h +20 -0
- include/momentum/common/fwd.h +27 -0
- include/momentum/common/log.h +173 -0
- include/momentum/common/log_channel.h +17 -0
- include/momentum/common/memory.h +71 -0
- include/momentum/common/profile.h +79 -0
- include/momentum/common/progress_bar.h +37 -0
- include/momentum/common/string.h +52 -0
- include/momentum/diff_ik/ceres_utility.h +73 -0
- include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
- include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
- include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
- include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
- include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
- include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
- include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
- include/momentum/diff_ik/fwd.h +385 -0
- include/momentum/diff_ik/union_error_function.h +67 -0
- include/momentum/gui/rerun/eigen_adapters.h +70 -0
- include/momentum/gui/rerun/logger.h +102 -0
- include/momentum/gui/rerun/logging_redirect.h +27 -0
- include/momentum/io/character_io.h +98 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +135 -0
- include/momentum/io/fbx/fbx_memory_stream.h +70 -0
- include/momentum/io/fbx/openfbx_loader.h +62 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/file_save_options.h +107 -0
- include/momentum/io/gltf/gltf_builder.h +141 -0
- include/momentum/io/gltf/gltf_io.h +149 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +30 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +56 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +82 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +38 -0
- include/momentum/io/skeleton/parameter_transform_io.h +80 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/skeleton/utility.h +67 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +64 -0
- include/momentum/marker_tracking/marker_tracker.h +221 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +99 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +324 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/text_rasterizer.h +89 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/axel/axel-config.cmake +45 -0
- lib/cmake/axel/axelTargets-release.cmake +19 -0
- lib/cmake/axel/axelTargets.cmake +108 -0
- lib/cmake/momentum/FindFbxSdk.cmake +115 -0
- lib/cmake/momentum/Findre2.cmake +52 -0
- lib/cmake/momentum/momentum-config.cmake +67 -0
- lib/cmake/momentum/momentumTargets-release.cmake +259 -0
- lib/cmake/momentum/momentumTargets.cmake +385 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/libaxel.a +0 -0
- lib/libmomentum_app_utils.a +0 -0
- lib/libmomentum_character.a +0 -0
- lib/libmomentum_character_sequence_solver.a +0 -0
- lib/libmomentum_character_solver.a +0 -0
- lib/libmomentum_common.a +0 -0
- lib/libmomentum_diff_ik.a +0 -0
- lib/libmomentum_io.a +0 -0
- lib/libmomentum_io_common.a +0 -0
- lib/libmomentum_io_fbx.a +0 -0
- lib/libmomentum_io_gltf.a +0 -0
- lib/libmomentum_io_legacy_json.a +0 -0
- lib/libmomentum_io_marker.a +0 -0
- lib/libmomentum_io_motion.a +0 -0
- lib/libmomentum_io_shape.a +0 -0
- lib/libmomentum_io_skeleton.a +0 -0
- lib/libmomentum_io_urdf.a +0 -0
- lib/libmomentum_marker_tracker.a +0 -0
- lib/libmomentum_math.a +0 -0
- lib/libmomentum_online_qr.a +0 -0
- lib/libmomentum_process_markers.a +0 -0
- lib/libmomentum_rerun.a +0 -0
- lib/libmomentum_simd_constraints.a +0 -0
- lib/libmomentum_simd_generalized_loss.a +0 -0
- lib/libmomentum_skeleton.a +0 -0
- lib/libmomentum_solver.a +0 -0
- lib/librerun_c__macos_arm64.a +0 -0
- lib/librerun_sdk.a +0 -0
- pymomentum/axel.cpython-312-darwin.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +631 -0
- pymomentum/backend/trs_backend.py +889 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-312-darwin.so +0 -0
- pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-darwin.so +0 -0
- pymomentum/solver2.cpython-312-darwin.so +0 -0
- pymomentum/torch/character.py +868 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.93.post0.dist-info/METADATA +126 -0
- pymomentum_cpu-0.1.93.post0.dist-info/RECORD +517 -0
- pymomentum_cpu-0.1.93.post0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.93.post0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/math/constants.h>
|
|
11
|
+
#include <momentum/math/types.h>
|
|
12
|
+
|
|
13
|
+
#include <gsl/gsl>
|
|
14
|
+
|
|
15
|
+
#ifdef _WIN32
|
|
16
|
+
#include <malloc.h>
|
|
17
|
+
#endif // _WIN32
|
|
18
|
+
|
|
19
|
+
namespace momentum {
|
|
20
|
+
|
|
21
|
+
/// NaN check function that isn't optimized away by fastmath
|
|
22
|
+
///
|
|
23
|
+
/// Unlike std::isnan(), this implementation is not affected by compiler optimizations
|
|
24
|
+
/// when using fast math options
|
|
25
|
+
[[nodiscard]] inline bool IsNanNoOpt(float f) {
|
|
26
|
+
union {
|
|
27
|
+
float f;
|
|
28
|
+
std::uint32_t x;
|
|
29
|
+
} u = {f};
|
|
30
|
+
return (u.x << 1) > 0xff000000u;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/// @name Math Utilities
|
|
34
|
+
/// @{
|
|
35
|
+
|
|
36
|
+
/// Creates a ParameterSet with all parameters set to active
|
|
37
|
+
inline ParameterSet allParams() {
|
|
38
|
+
ParameterSet params;
|
|
39
|
+
params.set();
|
|
40
|
+
return params;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/// Computes the square of a value
|
|
44
|
+
///
|
|
45
|
+
/// Convenience function for x * x
|
|
46
|
+
template <class T>
|
|
47
|
+
inline T sqr(const T& x) {
|
|
48
|
+
return x * x;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/// Determines if two values are approximately equal within a given tolerance.
|
|
52
|
+
template <typename T = float>
|
|
53
|
+
[[nodiscard]] bool isApprox(T l, T r, T eps = Eps<T>(1e-4, 1e-6)) noexcept {
|
|
54
|
+
return (std::abs(l - r) < eps);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/// @}
|
|
58
|
+
|
|
59
|
+
/// @name Matrix Utilities
|
|
60
|
+
/// @{
|
|
61
|
+
|
|
62
|
+
/// Calculates the pseudo-inverse of a matrix
|
|
63
|
+
///
|
|
64
|
+
/// Uses singular value decomposition (SVD) to compute the Moore-Penrose pseudo-inverse
|
|
65
|
+
/// @tparam T The scalar type
|
|
66
|
+
/// @param mat Input matrix
|
|
67
|
+
/// @return The pseudo-inverse of the input matrix
|
|
68
|
+
template <typename T>
|
|
69
|
+
MatrixX<T> pseudoInverse(const MatrixX<T>& mat);
|
|
70
|
+
|
|
71
|
+
/// Calculates the pseudo-inverse of a sparse matrix
|
|
72
|
+
///
|
|
73
|
+
/// Converts the sparse matrix to a dense matrix before computing the pseudo-inverse
|
|
74
|
+
/// @tparam T The scalar type
|
|
75
|
+
/// @param mat Input sparse matrix
|
|
76
|
+
/// @return The pseudo-inverse as a dense matrix
|
|
77
|
+
template <typename T>
|
|
78
|
+
MatrixX<T> pseudoInverse(const SparseMatrix<T>& mat);
|
|
79
|
+
|
|
80
|
+
/// @}
|
|
81
|
+
|
|
82
|
+
/// @name Geometry Utilities
|
|
83
|
+
/// @{
|
|
84
|
+
|
|
85
|
+
/// Computes the exponential map from a rotation vector (axis-angle in R^3) to a quaternion.
|
|
86
|
+
///
|
|
87
|
+
/// The exponential map takes a 3D rotation vector (where the direction is the rotation axis
|
|
88
|
+
/// and the magnitude is the rotation angle in radians) and returns the corresponding unit
|
|
89
|
+
/// quaternion. This is numerically robust for small angles using Taylor series expansion.
|
|
90
|
+
///
|
|
91
|
+
/// Reference: "Practical Parameterization of Rotations Using the Exponential Map"
|
|
92
|
+
/// by F. Sebastian Grassia, Journal of Graphics Tools, 1998.
|
|
93
|
+
///
|
|
94
|
+
/// @tparam T The scalar type
|
|
95
|
+
/// @param v The rotation vector (axis-angle representation)
|
|
96
|
+
/// @return The corresponding unit quaternion
|
|
97
|
+
template <typename T>
|
|
98
|
+
Quaternion<T> quaternionExpMap(const Vector3<T>& v);
|
|
99
|
+
|
|
100
|
+
/// Computes the logarithmic map from a quaternion to a rotation vector (axis-angle in R^3).
|
|
101
|
+
///
|
|
102
|
+
/// The logarithmic map takes a unit quaternion and returns the corresponding 3D rotation
|
|
103
|
+
/// vector (where the direction is the rotation axis and the magnitude is the rotation angle
|
|
104
|
+
/// in radians). This is numerically robust for small angles using Taylor series expansion.
|
|
105
|
+
/// For quaternions close to -I (180 degree rotation), a consistent branch is chosen.
|
|
106
|
+
///
|
|
107
|
+
/// Reference: "Practical Parameterization of Rotations Using the Exponential Map"
|
|
108
|
+
/// by F. Sebastian Grassia, Journal of Graphics Tools, 1998.
|
|
109
|
+
///
|
|
110
|
+
/// @tparam T The scalar type
|
|
111
|
+
/// @param q The input quaternion (should be normalized)
|
|
112
|
+
/// @return The corresponding rotation vector (axis-angle representation)
|
|
113
|
+
template <typename T>
|
|
114
|
+
Vector3<T> quaternionLogMap(const Quaternion<T>& q);
|
|
115
|
+
|
|
116
|
+
/// Computes the derivative of the logarithmic map with respect to quaternion components.
|
|
117
|
+
///
|
|
118
|
+
/// Given a quaternion q with coeffs [x, y, z, w], computes the Jacobian matrix J where:
|
|
119
|
+
/// J(i,j) = d(log(q)[i]) / dq.coeffs()[j]
|
|
120
|
+
/// where log(q) is the 3D rotation vector and q.coeffs() = [x, y, z, w] (Eigen's convention).
|
|
121
|
+
///
|
|
122
|
+
/// This is the fundamental building block for computing derivatives of functions
|
|
123
|
+
/// involving logmap through the chain rule.
|
|
124
|
+
///
|
|
125
|
+
/// Reference: "Practical Parameterization of Rotations Using the Exponential Map"
|
|
126
|
+
/// by F. Sebastian Grassia, Journal of Graphics Tools, 1998.
|
|
127
|
+
///
|
|
128
|
+
/// @tparam T The scalar type
|
|
129
|
+
/// @param q The input quaternion (should be normalized)
|
|
130
|
+
/// @return 3x4 Jacobian matrix where column j is the gradient w.r.t. q.coeffs()[j],
|
|
131
|
+
/// i.e., columns are ordered as [d/dx, d/dy, d/dz, d/dw]
|
|
132
|
+
template <typename T>
|
|
133
|
+
Eigen::Matrix<T, 3, 4> quaternionLogMapDerivative(const Quaternion<T>& q);
|
|
134
|
+
|
|
135
|
+
/// The Euler angles convention.
|
|
136
|
+
enum class EulerConvention {
|
|
137
|
+
/// The intrinsic convention. Intrinsic rotations (also called local, relative, or body-fixed
|
|
138
|
+
/// rotations) are performed around the axes of the coordinate system that is attached to the
|
|
139
|
+
/// rotating object.
|
|
140
|
+
///
|
|
141
|
+
/// Intrinsic rotations are usually represented by a sequence of three letters, like XYZ, which
|
|
142
|
+
/// means rotation around the X-axis, followed by rotation around the Y-axis, and finally rotation
|
|
143
|
+
/// around the Z-axis. For example, intrinsic XYZ is equivalent to RotX(a) * RotY(b) * RotZ(c).
|
|
144
|
+
Intrinsic,
|
|
145
|
+
|
|
146
|
+
/// The extrinsic convention. Extrinsic rotations (also called global, absolute, or space-fixed
|
|
147
|
+
/// rotations) are performed around the axes of a fixed coordinate system.
|
|
148
|
+
///
|
|
149
|
+
/// Extrinsic rotations are often represented by uppercase letters, like XYZ, which means rotation
|
|
150
|
+
/// around the fixed X-axis, followed by rotation around the fixed Y-axis, and finally rotation
|
|
151
|
+
/// around the fixed Z-axis. For example, extrinsic XYZ is equivalent to RotZ(c) * RotY(b) *
|
|
152
|
+
/// RotX(a).
|
|
153
|
+
Extrinsic,
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
/// Converts rotation matrix to Euler angles
|
|
157
|
+
///
|
|
158
|
+
/// @tparam T The scalar type.
|
|
159
|
+
/// @param[in] m The rotation matrix to convert.
|
|
160
|
+
/// @param[in] axis0 The index of the first rotation's axis, one of {0, 1, 2}.
|
|
161
|
+
/// @param[in] axis1 The index of the second rotation's axis, one of {0, 1, 2}.
|
|
162
|
+
/// @param[in] axis2 The index of the third rotation's axis, one of {0, 1, 2}.
|
|
163
|
+
/// @param[in] convention The Euler angles convention.
|
|
164
|
+
template <typename T>
|
|
165
|
+
[[nodiscard]] Vector3<T> rotationMatrixToEuler(
|
|
166
|
+
const Matrix3<T>& m,
|
|
167
|
+
int axis0,
|
|
168
|
+
int axis1,
|
|
169
|
+
int axis2,
|
|
170
|
+
EulerConvention convention = EulerConvention::Intrinsic);
|
|
171
|
+
|
|
172
|
+
/// An optimized version of rotationMatrixToEuler(m, 0, 1, 2, convention) or
|
|
173
|
+
/// rotationMatrixToEuler(m, 2, 1, 0, convention).reverse().
|
|
174
|
+
template <typename T>
|
|
175
|
+
[[nodiscard]] Vector3<T> rotationMatrixToEulerXYZ(
|
|
176
|
+
const Matrix3<T>& m,
|
|
177
|
+
EulerConvention convention = EulerConvention::Intrinsic);
|
|
178
|
+
|
|
179
|
+
/// An optimized version of rotationMatrixToEuler(m, 2, 1, 0, convention) or
|
|
180
|
+
/// rotationMatrixToEuler(m, 0, 1, 2, convention).reverse().
|
|
181
|
+
template <typename T>
|
|
182
|
+
[[nodiscard]] Vector3<T> rotationMatrixToEulerZYX(
|
|
183
|
+
const Matrix3<T>& m,
|
|
184
|
+
EulerConvention convention = EulerConvention::Intrinsic);
|
|
185
|
+
|
|
186
|
+
/// Fits a two-axis Euler rotation to a rotation matrix
|
|
187
|
+
///
|
|
188
|
+
/// Finds the best-fit two-axis Euler angles (axis0 then axis1) that minimize the
|
|
189
|
+
/// L2 distance to the target rotation matrix using Levenberg-Marquardt optimization.
|
|
190
|
+
///
|
|
191
|
+
/// @tparam T The scalar type.
|
|
192
|
+
/// @param[in] m The target rotation matrix.
|
|
193
|
+
/// @param[in] axis0 The index of the first rotation axis, one of {0, 1, 2}.
|
|
194
|
+
/// @param[in] axis1 The index of the second rotation axis, one of {0, 1, 2}.
|
|
195
|
+
/// @return A 2D vector containing the fitted Euler angles [angle0, angle1].
|
|
196
|
+
template <typename T>
|
|
197
|
+
[[nodiscard]] Vector2<T> rotationMatrixToTwoAxisEuler(const Matrix3<T>& m, int axis0, int axis1);
|
|
198
|
+
|
|
199
|
+
/// Fits a single-axis Euler rotation to a rotation matrix
|
|
200
|
+
///
|
|
201
|
+
/// Finds the best-fit single-axis rotation angle that minimizes the L2 distance
|
|
202
|
+
/// to the target rotation matrix using Levenberg-Marquardt optimization. This is
|
|
203
|
+
/// NOT a direct conversion - if the input matrix cannot be exactly represented as
|
|
204
|
+
/// a single-axis rotation, this function returns the closest approximation.
|
|
205
|
+
///
|
|
206
|
+
/// For exact single-axis rotations, the result will be precise. For general rotation
|
|
207
|
+
/// matrices (e.g., those involving rotations around multiple axes), the result is the
|
|
208
|
+
/// best single-axis approximation in the least-squares sense.
|
|
209
|
+
///
|
|
210
|
+
/// @tparam T The scalar type.
|
|
211
|
+
/// @param[in] m The target rotation matrix.
|
|
212
|
+
/// @param[in] axis0 The rotation axis index, one of {0, 1, 2} (X, Y, Z).
|
|
213
|
+
/// @return The fitted rotation angle around the specified axis.
|
|
214
|
+
template <typename T>
|
|
215
|
+
[[nodiscard]] T rotationMatrixToOneAxisEuler(const Matrix3<T>& m, int axis0);
|
|
216
|
+
|
|
217
|
+
/// Converts Euler angles to quaternion
|
|
218
|
+
///
|
|
219
|
+
/// @tparam T The scalar type.
|
|
220
|
+
/// @param[in] angles The 3-dimensional vector of Euler angles in order.
|
|
221
|
+
/// @param[in] axis0 The index of the first rotation's axis, one of {0, 1, 2}.
|
|
222
|
+
/// @param[in] axis1 The index of the second rotation's axis, one of {0, 1, 2}.
|
|
223
|
+
/// @param[in] axis2 The index of the third rotation's axis, one of {0, 1, 2}.
|
|
224
|
+
/// @param[in] convention The Euler angles convention.
|
|
225
|
+
template <typename T>
|
|
226
|
+
[[nodiscard]] Quaternion<T> eulerToQuaternion(
|
|
227
|
+
const Vector3<T>& angles,
|
|
228
|
+
int axis0,
|
|
229
|
+
int axis1,
|
|
230
|
+
int axis2,
|
|
231
|
+
EulerConvention convention = EulerConvention::Intrinsic);
|
|
232
|
+
|
|
233
|
+
/// Converts Euler angles to rotation matrix
|
|
234
|
+
///
|
|
235
|
+
/// @tparam T The scalar type.
|
|
236
|
+
/// @param[in] angles The 3-dimensional vector of Euler angles in order.
|
|
237
|
+
/// @param[in] axis0 The index of the first rotation's axis, one of {0, 1, 2}.
|
|
238
|
+
/// @param[in] axis1 The index of the second rotation's axis, one of {0, 1, 2}.
|
|
239
|
+
/// @param[in] axis2 The index of the third rotation's axis, one of {0, 1, 2}.
|
|
240
|
+
/// @param[in] convention The Euler angles convention.
|
|
241
|
+
template <typename T>
|
|
242
|
+
[[nodiscard]] Matrix3<T> eulerToRotationMatrix(
|
|
243
|
+
const Vector3<T>& angles,
|
|
244
|
+
int axis0,
|
|
245
|
+
int axis1,
|
|
246
|
+
int axis2,
|
|
247
|
+
EulerConvention convention = EulerConvention::Intrinsic);
|
|
248
|
+
|
|
249
|
+
/// An optimized version of eulerToRotationMatrix(angles, 0, 1, 2, convention) or
|
|
250
|
+
/// eulerToRotationMatrix(angles.reverse(), 2, 1, 0, convention).
|
|
251
|
+
template <typename T>
|
|
252
|
+
[[nodiscard]] Matrix3<T> eulerXYZToRotationMatrix(
|
|
253
|
+
const Vector3<T>& angles,
|
|
254
|
+
EulerConvention convention = EulerConvention::Intrinsic);
|
|
255
|
+
|
|
256
|
+
/// An optimized version of eulerToRotationMatrix(angles, 2, 1, 0, convention) or
|
|
257
|
+
/// eulerToRotationMatrix(angles.reverse(), 0, 1, 2, convention).
|
|
258
|
+
template <typename T>
|
|
259
|
+
[[nodiscard]] Matrix3<T> eulerZYXToRotationMatrix(
|
|
260
|
+
const Vector3<T>& angles,
|
|
261
|
+
EulerConvention convention = EulerConvention::Intrinsic);
|
|
262
|
+
|
|
263
|
+
/// Converts a quaternion to Euler angles using the Extrinsic XYZ convention
|
|
264
|
+
///
|
|
265
|
+
/// The returned angles [x, y, z] are such that applying Extrinsic rotations
|
|
266
|
+
/// RotX(x) then RotY(y) then RotZ(z) (i.e., about fixed world axes) reproduces
|
|
267
|
+
/// the input quaternion's rotation. Empirically verified by tests.
|
|
268
|
+
///
|
|
269
|
+
/// Note: This matches the convention used in skeleton_state (skel_state): Extrinsic XYZ.
|
|
270
|
+
///
|
|
271
|
+
/// @tparam T The scalar type
|
|
272
|
+
/// @param q Input quaternion
|
|
273
|
+
/// @return Vector of Euler angles [x, y, z]
|
|
274
|
+
template <typename T>
|
|
275
|
+
Vector3<T> quaternionToEuler(const Quaternion<T>& q);
|
|
276
|
+
|
|
277
|
+
/// Computes the weighted average of multiple quaternions
|
|
278
|
+
///
|
|
279
|
+
/// Uses the method described in Markley et al. "Averaging Quaternions"
|
|
280
|
+
/// @param q Array of quaternions to average
|
|
281
|
+
/// @param w Optional weights for each quaternion (defaults to equal weights)
|
|
282
|
+
/// @return The average quaternion
|
|
283
|
+
Quaternionf quaternionAverage(
|
|
284
|
+
std::span<const Quaternionf> q,
|
|
285
|
+
std::span<const float> w = std::vector<float>());
|
|
286
|
+
|
|
287
|
+
/// Returns the closest points on two line segments where the line segments are represented in
|
|
288
|
+
/// origin and direction
|
|
289
|
+
///
|
|
290
|
+
/// @tparam T Scalar type
|
|
291
|
+
/// @param o1 Origin of the first line segment
|
|
292
|
+
/// @param d1 Direction of the first line segment
|
|
293
|
+
/// @param o2 Origin of the second line segment
|
|
294
|
+
/// @param d2 Direction of the second line segment
|
|
295
|
+
/// @param maxDist Maximum distance to check
|
|
296
|
+
/// @return [success, distance, [dist0, dist1]]:
|
|
297
|
+
/// - success: Whether the closest points were successfully found. On false, the rest return values
|
|
298
|
+
/// are invalid.
|
|
299
|
+
/// - distance: Distance between the closest points
|
|
300
|
+
/// - [dist0, dist1]: Distances of the closest points from their origins to the directions
|
|
301
|
+
template <typename T>
|
|
302
|
+
[[nodiscard]] std::tuple<bool, T, Eigen::Vector2<T>> closestPointsOnSegments(
|
|
303
|
+
const Eigen::Vector3<T>& o1,
|
|
304
|
+
const Eigen::Vector3<T>& d1,
|
|
305
|
+
const Eigen::Vector3<T>& o2,
|
|
306
|
+
const Eigen::Vector3<T>& d2,
|
|
307
|
+
T maxDist = std::numeric_limits<T>::max());
|
|
308
|
+
|
|
309
|
+
/// Creates a skew-symmetric matrix for computing cross products
|
|
310
|
+
///
|
|
311
|
+
/// Returns a matrix M such that M*u = v×u for any vector u
|
|
312
|
+
/// @tparam T The scalar type
|
|
313
|
+
/// @param v Input vector
|
|
314
|
+
/// @return 3×3 skew-symmetric matrix
|
|
315
|
+
template <typename T>
|
|
316
|
+
Eigen::Matrix<T, 3, 3> crossProductMatrix(const Eigen::Vector3<T>& v) {
|
|
317
|
+
Eigen::Matrix<T, 3, 3> result;
|
|
318
|
+
result << T(0), -v.z(), v.y(), v.z(), T(0), -v.x(), -v.y(), v.x(), T(0);
|
|
319
|
+
return result;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/// @}
|
|
323
|
+
|
|
324
|
+
} // namespace momentum
|