pymomentum-cpu 0.0.0__cp312-cp312-manylinux_2_39_x86_64.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.
Potentially problematic release.
This version of pymomentum-cpu might be problematic. Click here for more details.
- include/axel/BoundingBox.h +58 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +86 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/KdTree.h +199 -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 +237 -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 +98 -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 +91 -0
- include/momentum/character/blend_shape_base.h +70 -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 +243 -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 +82 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +250 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +181 -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 +62 -0
- include/momentum/character_sequence_solver/multipose_solver.h +63 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +80 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +95 -0
- include/momentum/character_sequence_solver/sequence_solver.h +144 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +126 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +106 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +125 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +88 -0
- include/momentum/character_solver/collision_error_function_stateless.h +71 -0
- include/momentum/character_solver/constraint_error_function-inl.h +321 -0
- include/momentum/character_solver/constraint_error_function.h +241 -0
- include/momentum/character_solver/distance_error_function.h +74 -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 +924 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +62 -0
- include/momentum/character_solver/limit_error_function.h +53 -0
- include/momentum/character_solver/model_parameters_error_function.h +61 -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 +140 -0
- include/momentum/character_solver/pose_prior_error_function.h +76 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +90 -0
- include/momentum/character_solver/simd_collision_error_function.h +95 -0
- include/momentum/character_solver/simd_normal_error_function.h +151 -0
- include/momentum/character_solver/simd_plane_error_function.h +154 -0
- include/momentum/character_solver/simd_position_error_function.h +155 -0
- include/momentum/character_solver/skeleton_error_function.h +136 -0
- include/momentum/character_solver/skeleton_solver_function.h +72 -0
- include/momentum/character_solver/skinned_locator_error_function.h +163 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +138 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +90 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +78 -0
- include/momentum/character_solver/vertex_error_function.h +154 -0
- include/momentum/character_solver/vertex_projection_error_function.h +118 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +143 -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 +109 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +133 -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 +63 -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 +56 -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 +109 -0
- include/momentum/io/fbx/fbx_memory_stream.h +66 -0
- include/momentum/io/fbx/openfbx_loader.h +49 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/gltf/gltf_builder.h +135 -0
- include/momentum/io/gltf/gltf_file_format.h +19 -0
- include/momentum/io/gltf/gltf_io.h +136 -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 +29 -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 +54 -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 +70 -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 +25 -0
- include/momentum/io/skeleton/parameter_transform_io.h +41 -0
- include/momentum/io/skeleton/parameters_io.h +20 -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 +62 -0
- include/momentum/marker_tracking/marker_tracker.h +213 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +90 -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 +251 -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/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/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/librerun_c__linux_x64.a +0 -0
- lib/librerun_sdk.a +0 -0
- lib64/cmake/axel/axel-config.cmake +45 -0
- lib64/cmake/axel/axelTargets-release.cmake +19 -0
- lib64/cmake/axel/axelTargets.cmake +108 -0
- lib64/cmake/momentum/Findre2.cmake +52 -0
- lib64/cmake/momentum/momentum-config.cmake +67 -0
- lib64/cmake/momentum/momentumTargets-release.cmake +269 -0
- lib64/cmake/momentum/momentumTargets.cmake +445 -0
- lib64/libaxel.a +0 -0
- lib64/libmomentum_app_utils.a +0 -0
- lib64/libmomentum_character.a +0 -0
- lib64/libmomentum_character_sequence_solver.a +0 -0
- lib64/libmomentum_character_solver.a +0 -0
- lib64/libmomentum_common.a +0 -0
- lib64/libmomentum_diff_ik.a +0 -0
- lib64/libmomentum_io.a +0 -0
- lib64/libmomentum_io_common.a +0 -0
- lib64/libmomentum_io_fbx.a +0 -0
- lib64/libmomentum_io_gltf.a +0 -0
- lib64/libmomentum_io_legacy_json.a +0 -0
- lib64/libmomentum_io_marker.a +0 -0
- lib64/libmomentum_io_motion.a +0 -0
- lib64/libmomentum_io_shape.a +0 -0
- lib64/libmomentum_io_skeleton.a +0 -0
- lib64/libmomentum_io_urdf.a +0 -0
- lib64/libmomentum_marker_tracker.a +0 -0
- lib64/libmomentum_math.a +0 -0
- lib64/libmomentum_online_qr.a +0 -0
- lib64/libmomentum_process_markers.a +0 -0
- lib64/libmomentum_rasterizer.a +0 -0
- lib64/libmomentum_rerun.a +0 -0
- lib64/libmomentum_simd_constraints.a +0 -0
- lib64/libmomentum_simd_generalized_loss.a +0 -0
- lib64/libmomentum_skeleton.a +0 -0
- lib64/libmomentum_solver.a +0 -0
- pymomentum/axel.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +614 -0
- pymomentum/backend/trs_backend.py +871 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/marker_tracking.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/renderer.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/solver2.cpython-312-x86_64-linux-gnu.so +0 -0
- pymomentum/torch/character.py +809 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.0.0.dist-info/METADATA +209 -0
- pymomentum_cpu-0.0.0.dist-info/RECORD +555 -0
- pymomentum_cpu-0.0.0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.0.0.dist-info/licenses/LICENSE +21 -0
- pymomentum_cpu.libs/libabsl_base-86f3b38c.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_city-31b65ca2.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_debugging_internal-38680253.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_decode_rust_punycode-750652c3.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_demangle_internal-9a0351a3.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_demangle_rust-71629506.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_examine_stack-57661ecd.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_hash-8c523b7e.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_hashtablez_sampler-b5c3e343.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_int128-295bfed5.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_kernel_timeout_internal-29296ac1.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_globals-6cfa8af5.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_format-a5c79460.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_globals-481e9a7c.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_log_sink_set-ac08f942.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_message-7dfe150a.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_nullguard-883adc72.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_proto-a5da8c75.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_internal_structured_proto-e601fd9b.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_log_sink-894261b2.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_low_level_hash-a3284638.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_malloc_internal-814569de.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_raw_hash_set-922d64ad.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_raw_logging_internal-477f78ec.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_spinlock_wait-8b85a473.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_stacktrace-7369e71d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_str_format_internal-98de729d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strerror-39a52998.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strings-a57d5127.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_strings_internal-ed8c7c0d.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_symbolize-eba17dd1.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_synchronization-2f8cf326.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_time-066c0dde.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_time_zone-72867365.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_tracing_internal-021e37ee.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libabsl_utf8_for_code_point-de2a4d4a.so.2505.0.0 +0 -0
- pymomentum_cpu.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
- pymomentum_cpu.libs/libdeflate-577b71e3.so.0 +0 -0
- pymomentum_cpu.libs/libdispenso-67ac1721.so.1.4.0 +0 -0
- pymomentum_cpu.libs/libezc3d-4a95ab2c.so +0 -0
- pymomentum_cpu.libs/libre2-985fb83c.so.11 +0 -0
- pymomentum_cpu.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
- pymomentum_cpu.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
|
@@ -0,0 +1,310 @@
|
|
|
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/types.h>
|
|
11
|
+
|
|
12
|
+
#include <random>
|
|
13
|
+
|
|
14
|
+
namespace momentum {
|
|
15
|
+
|
|
16
|
+
/// A consolidated random number generator to provide convenient APIs wrapping around the random
|
|
17
|
+
/// library of C++ standard library <random>.
|
|
18
|
+
///
|
|
19
|
+
/// The default engine used in this class is std::mt19937, but it can be replaced, by specifying the
|
|
20
|
+
/// template argument, with any preferable engines (see:
|
|
21
|
+
/// https://en.cppreference.com/w/cpp/numeric/random).
|
|
22
|
+
template <typename Generator_ = std::mt19937>
|
|
23
|
+
class Random final {
|
|
24
|
+
public:
|
|
25
|
+
using Generator = Generator_;
|
|
26
|
+
|
|
27
|
+
/// Returns the singleton instance
|
|
28
|
+
[[nodiscard]] static Random& GetSingleton();
|
|
29
|
+
|
|
30
|
+
/// Constructor
|
|
31
|
+
explicit Random(uint32_t seed = std::random_device{}());
|
|
32
|
+
|
|
33
|
+
/// Generates a random scalar/vector/matrix from the uniform distribution
|
|
34
|
+
///
|
|
35
|
+
/// The supported types are scalar, vector, or matrix where the elements can be either integer or
|
|
36
|
+
/// real. The supported integer types are whichever supported by std::uniform_int_distribution<T>
|
|
37
|
+
/// (see: https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution), and the
|
|
38
|
+
/// supported real types are whichever std::is_floating_point<T>::value is true (see:
|
|
39
|
+
/// https://en.cppreference.com/w/cpp/types/is_floating_point).
|
|
40
|
+
///
|
|
41
|
+
/// The generated random number is in the range of [min, max] for integer types or [min, max) for
|
|
42
|
+
/// real types. However, when built with the -ffast-math flag, the range for real types could be
|
|
43
|
+
/// [min, max] instead.
|
|
44
|
+
///
|
|
45
|
+
/// @warning While the upper bound is typically exclusive for real types according to
|
|
46
|
+
/// std::uniform_real_distribution, there may be instances where the sampled value equals the
|
|
47
|
+
/// upper bound, depending on the platform and compiler specifics.
|
|
48
|
+
///
|
|
49
|
+
/// For vector/matrix types, the bounds can be specified in either scalar or (the same dimension
|
|
50
|
+
/// of) vector/matrix. Use this function to specify the bounds in vector/matrix to apply different
|
|
51
|
+
/// bounds for each element in the generated vector/matrix. Use other versions of uniform() that
|
|
52
|
+
/// specify the bounds in scalar to apply the same bounds to all the elements of the generated
|
|
53
|
+
/// vector/matrix.
|
|
54
|
+
///
|
|
55
|
+
/// @code
|
|
56
|
+
/// Random rand;
|
|
57
|
+
/// auto r0 = rand.uniform(0.0, 1.0); // random double in [0, 1)
|
|
58
|
+
/// auto r1 = rand.uniform(0.f, 1.f); // random float in [0, 1)
|
|
59
|
+
/// auto r3 = rand.uniform(0, 10); // random int in [0, 10]
|
|
60
|
+
/// auto r4 = rand.uniform(Vector2f(0, 1), Vector2f(2, 3)); // random Vector2f in ([0, 2], [1, 3))
|
|
61
|
+
/// @endcode
|
|
62
|
+
///
|
|
63
|
+
/// @tparam T The random number type to be generated
|
|
64
|
+
/// @param[in] min The lower bound of the random number
|
|
65
|
+
/// @param[in] max The upper bound of the random number
|
|
66
|
+
template <typename T>
|
|
67
|
+
[[nodiscard]] T uniform(const T& min, const T& max);
|
|
68
|
+
|
|
69
|
+
/// Generates a random vector/matrix from the uniform distribution, where the size is fixed
|
|
70
|
+
///
|
|
71
|
+
/// This is a special case of T uniform(const T&, const T&) where the random number type is fixed
|
|
72
|
+
/// size of vector/matrix and the bounds are specified by the scalar type.
|
|
73
|
+
///
|
|
74
|
+
/// @code
|
|
75
|
+
/// Random rand;
|
|
76
|
+
/// auto r0 = rand.uniform<Vector2f>(0, 1); // random Vector2f in ([0, 1], [0, 1))
|
|
77
|
+
/// @endcode
|
|
78
|
+
///
|
|
79
|
+
/// @tparam FixedSizeT The random vector/matrix type to be generated
|
|
80
|
+
/// @param[in] min The lower bound in scalar.
|
|
81
|
+
/// @param[in] max The upper bound in scalar.
|
|
82
|
+
template <typename FixedSizeT>
|
|
83
|
+
[[nodiscard]] FixedSizeT uniform(
|
|
84
|
+
typename FixedSizeT::Scalar min,
|
|
85
|
+
typename FixedSizeT::Scalar max);
|
|
86
|
+
|
|
87
|
+
/// Generates a random vector from the uniform distribution, where the size is dynamic
|
|
88
|
+
///
|
|
89
|
+
/// This is a special case of T uniform(const T&, const T&) where the random number type is
|
|
90
|
+
/// dynamic size of vector and the bounds are specified by the scalar type.
|
|
91
|
+
///
|
|
92
|
+
/// @code
|
|
93
|
+
/// Random rand;
|
|
94
|
+
/// auto r0 = rand.uniform<VectorXf>(2, 0, 1); // random VectorXf of dimension 2 where each
|
|
95
|
+
/// element is in [0, 1)
|
|
96
|
+
/// @endcode
|
|
97
|
+
///
|
|
98
|
+
/// @tparam DynamicVector The random vector type to be generated
|
|
99
|
+
/// @param[in] size The size of the vector.
|
|
100
|
+
/// @param[in] min The lower bound in scalar.
|
|
101
|
+
/// @param[in] max The upper bound in scalar.
|
|
102
|
+
template <typename DynamicVector>
|
|
103
|
+
[[nodiscard]] DynamicVector uniform(
|
|
104
|
+
Eigen::Index size,
|
|
105
|
+
typename DynamicVector::Scalar min,
|
|
106
|
+
typename DynamicVector::Scalar max);
|
|
107
|
+
|
|
108
|
+
/// Generates a random matrix from the uniform distribution, where the size is dynamic
|
|
109
|
+
///
|
|
110
|
+
/// This is a special case of T uniform(const T&, const T&) where the random number type is
|
|
111
|
+
/// dynamic size of matrix and the bounds are specified by the scalar type.
|
|
112
|
+
///
|
|
113
|
+
/// @code
|
|
114
|
+
/// Random rand;
|
|
115
|
+
/// auto r0 = rand.uniform<MatrixXf>(2, 3, 0, 1); // random MatrixXf of dimension 2x3 where each
|
|
116
|
+
/// element is in [0, 1)
|
|
117
|
+
/// @endcode
|
|
118
|
+
///
|
|
119
|
+
/// @tparam DynamicMatrix The random matrix type to be generated
|
|
120
|
+
/// @param[in] rows The row size of the matrix.
|
|
121
|
+
/// @param[in] cols The column size of the matrix.
|
|
122
|
+
/// @param[in] min The lower bound in scalar.
|
|
123
|
+
/// @param[in] max The upper bound in scalar.
|
|
124
|
+
template <typename DynamicMatrix>
|
|
125
|
+
[[nodiscard]] DynamicMatrix uniform(
|
|
126
|
+
Eigen::Index rows,
|
|
127
|
+
Eigen::Index cols,
|
|
128
|
+
typename DynamicMatrix::Scalar min,
|
|
129
|
+
typename DynamicMatrix::Scalar max);
|
|
130
|
+
|
|
131
|
+
/// Generates a random quaternion from a uniform distribution on SO(3)
|
|
132
|
+
template <typename T>
|
|
133
|
+
[[nodiscard]] Quaternion<T> uniformQuaternion();
|
|
134
|
+
|
|
135
|
+
/// Generates a random rotation matrix from a uniform distribution on SO(3)
|
|
136
|
+
template <typename T>
|
|
137
|
+
[[nodiscard]] Matrix3<T> uniformRotationMatrix();
|
|
138
|
+
|
|
139
|
+
/// Generates a random isometry (rigid transformation) from a uniform distribution on SE(3)
|
|
140
|
+
/// based on input minimum and maximum 3D vectors for the translation part.
|
|
141
|
+
///
|
|
142
|
+
/// @tparam Generator The type of random number generator.
|
|
143
|
+
/// @tparam T The type of isometry component, typically a float or double.
|
|
144
|
+
/// @param min The minimum 3D vector for the translation part.
|
|
145
|
+
/// @param max The maximum 3D vector for the translation part.
|
|
146
|
+
/// @return A random Isometry3 of type T.
|
|
147
|
+
template <typename T>
|
|
148
|
+
[[nodiscard]] Isometry3<T> uniformIsometry3(
|
|
149
|
+
const Vector3<T>& min = Vector3<T>::Zero(),
|
|
150
|
+
const Vector3<T>& max = Vector3<T>::Ones());
|
|
151
|
+
|
|
152
|
+
/// Generates a random affine transformation from a uniform distribution on the space of all
|
|
153
|
+
/// affine transformations.
|
|
154
|
+
///
|
|
155
|
+
/// The transformation is created based on input minimum and maximum 3D vectors for the
|
|
156
|
+
/// translation part, and minimum and maximum scale factors for the linear part.
|
|
157
|
+
///
|
|
158
|
+
/// @tparam Generator The type of random number generator.
|
|
159
|
+
/// @tparam T The type of affine transformation component, typically a float or double.
|
|
160
|
+
/// @param scaleMin The minimum scale factor for the linear part.
|
|
161
|
+
/// @param scaleMax The maximum scale factor for the linear part.
|
|
162
|
+
/// @param min The minimum 3D vector for the translation part.
|
|
163
|
+
/// @param max The maximum 3D vector for the translation part.
|
|
164
|
+
/// @return A random Affine3 of type T.
|
|
165
|
+
template <typename T>
|
|
166
|
+
[[nodiscard]] Affine3<T> uniformAffine3(
|
|
167
|
+
T scaleMin = 0.1,
|
|
168
|
+
T scaleMax = 10.0,
|
|
169
|
+
const Vector3<T>& min = Vector3<T>::Zero(),
|
|
170
|
+
const Vector3<T>& max = Vector3<T>::Ones());
|
|
171
|
+
|
|
172
|
+
/// Generates a random value from the Gaussian distribution
|
|
173
|
+
///
|
|
174
|
+
/// @tparam T The random number type to be generated
|
|
175
|
+
/// @param[in] mean The mean of the Gaussian distribution
|
|
176
|
+
/// @param[in] sigma The standard deviation of the Gaussian distribution
|
|
177
|
+
template <typename T>
|
|
178
|
+
[[nodiscard]] T normal(const T& mean, const T& sigma);
|
|
179
|
+
|
|
180
|
+
/// Generates a random value from the Gaussian distribution
|
|
181
|
+
///
|
|
182
|
+
/// @tparam FixedSizeT The random vector/matrix type to be generated
|
|
183
|
+
/// @param[in] mean The mean of the Gaussian distribution
|
|
184
|
+
/// @param[in] sigma The standard deviation of the Gaussian distribution
|
|
185
|
+
template <typename FixedSizeT>
|
|
186
|
+
[[nodiscard]] FixedSizeT normal(
|
|
187
|
+
typename FixedSizeT::Scalar mean,
|
|
188
|
+
typename FixedSizeT::Scalar sigma);
|
|
189
|
+
|
|
190
|
+
/// Generates a random value from the Gaussian distribution
|
|
191
|
+
///
|
|
192
|
+
/// @tparam DynamicVector The random vector type to be generated
|
|
193
|
+
/// @param[in] size The size of the vector.
|
|
194
|
+
/// @param[in] mean The mean of the Gaussian distribution
|
|
195
|
+
/// @param[in] sigma The standard deviation of the Gaussian distribution
|
|
196
|
+
template <typename DynamicVector>
|
|
197
|
+
[[nodiscard]] DynamicVector normal(
|
|
198
|
+
Eigen::Index size,
|
|
199
|
+
typename DynamicVector::Scalar mean,
|
|
200
|
+
typename DynamicVector::Scalar sigma);
|
|
201
|
+
|
|
202
|
+
/// Generates a random value from the Gaussian distribution
|
|
203
|
+
///
|
|
204
|
+
/// @tparam DynamicMatrix The random matrix type to be generated
|
|
205
|
+
/// @param[in] rows The row size of the matrix.
|
|
206
|
+
/// @param[in] cols The column size of the matrix.
|
|
207
|
+
/// @param[in] mean The mean of the Gaussian distribution
|
|
208
|
+
/// @param[in] sigma The standard deviation of the Gaussian distribution
|
|
209
|
+
template <typename DynamicMatrix>
|
|
210
|
+
[[nodiscard]] DynamicMatrix normal(
|
|
211
|
+
Eigen::Index rows,
|
|
212
|
+
Eigen::Index cols,
|
|
213
|
+
typename DynamicMatrix::Scalar mean,
|
|
214
|
+
typename DynamicMatrix::Scalar sigma);
|
|
215
|
+
|
|
216
|
+
/// Returns the seed.
|
|
217
|
+
[[nodiscard]] uint32_t getSeed() const;
|
|
218
|
+
|
|
219
|
+
/// Sets a new seed for the internal random number engine.
|
|
220
|
+
void setSeed(uint32_t seed);
|
|
221
|
+
|
|
222
|
+
private:
|
|
223
|
+
/// The seed used for the internal random number engine.
|
|
224
|
+
uint32_t seed_;
|
|
225
|
+
|
|
226
|
+
/// The internal random number engine.
|
|
227
|
+
Generator generator_;
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
/// Generates a random type T from the uniform distribution, using the global random number
|
|
231
|
+
/// generator Random
|
|
232
|
+
template <typename T>
|
|
233
|
+
[[nodiscard]] T uniform(const T& min, const T& max);
|
|
234
|
+
|
|
235
|
+
/// Generates a random fixed size vector/matrix from the uniform distribution, using the global
|
|
236
|
+
/// random number generator Random
|
|
237
|
+
template <typename FixedSizeT>
|
|
238
|
+
[[nodiscard]] FixedSizeT uniform(typename FixedSizeT::Scalar min, typename FixedSizeT::Scalar max);
|
|
239
|
+
|
|
240
|
+
/// Generates a random dynamic size vector from the uniform distribution, using the global random
|
|
241
|
+
/// number generator Random
|
|
242
|
+
template <typename DynamicVector>
|
|
243
|
+
[[nodiscard]] DynamicVector
|
|
244
|
+
uniform(Eigen::Index size, typename DynamicVector::Scalar min, typename DynamicVector::Scalar max);
|
|
245
|
+
|
|
246
|
+
/// Generates a random type dynamic size matrix from the uniform distribution, using the global
|
|
247
|
+
/// random number generator Random
|
|
248
|
+
template <typename DynamicMatrix>
|
|
249
|
+
[[nodiscard]] DynamicMatrix uniform(
|
|
250
|
+
Eigen::Index rows,
|
|
251
|
+
Eigen::Index cols,
|
|
252
|
+
typename DynamicMatrix::Scalar min,
|
|
253
|
+
typename DynamicMatrix::Scalar max);
|
|
254
|
+
|
|
255
|
+
/// Generates a random quaternion from a uniform distribution on SO(3)
|
|
256
|
+
template <typename T>
|
|
257
|
+
[[nodiscard]] Quaternion<T> uniformQuaternion();
|
|
258
|
+
|
|
259
|
+
/// Generates a random rotation matrix from a uniform distribution on SO(3)
|
|
260
|
+
template <typename T>
|
|
261
|
+
[[nodiscard]] Matrix3<T> uniformRotationMatrix();
|
|
262
|
+
|
|
263
|
+
/// Generates a random isometry (rigid transformation) from a uniform distribution on SE(3)
|
|
264
|
+
/// based on input minimum and maximum 3D vectors for the translation part.
|
|
265
|
+
template <typename T>
|
|
266
|
+
[[nodiscard]] Isometry3<T> uniformIsometry3(
|
|
267
|
+
const Vector3<T>& min = Vector3<T>::Zero(),
|
|
268
|
+
const Vector3<T>& max = Vector3<T>::Ones());
|
|
269
|
+
|
|
270
|
+
/// Generates a random affine transformation from a uniform distribution on the space of all
|
|
271
|
+
/// affine transformations.
|
|
272
|
+
template <typename T>
|
|
273
|
+
[[nodiscard]] Affine3<T> uniformAffine3(
|
|
274
|
+
T scaleMin = 0.1,
|
|
275
|
+
T scaleMax = 10.0,
|
|
276
|
+
const Vector3<T>& min = Vector3<T>::Zero(),
|
|
277
|
+
const Vector3<T>& max = Vector3<T>::Ones());
|
|
278
|
+
|
|
279
|
+
/// Generates a random type T from the Gaussian distribution, using the global random number
|
|
280
|
+
/// generator Random
|
|
281
|
+
template <typename T>
|
|
282
|
+
[[nodiscard]] T normal(const T& mean, const T& sigma);
|
|
283
|
+
|
|
284
|
+
/// Generates a random fixed size vector/matrix from the Gaussian distribution, using the global
|
|
285
|
+
/// random number generator Random
|
|
286
|
+
template <typename FixedSizeT>
|
|
287
|
+
[[nodiscard]] FixedSizeT normal(
|
|
288
|
+
typename FixedSizeT::Scalar mean,
|
|
289
|
+
typename FixedSizeT::Scalar sigma);
|
|
290
|
+
|
|
291
|
+
/// Generates a random dynamic size vector from the Gaussian distribution, using the global random
|
|
292
|
+
/// number generator Random
|
|
293
|
+
template <typename DynamicVector>
|
|
294
|
+
[[nodiscard]] DynamicVector normal(
|
|
295
|
+
Eigen::Index size,
|
|
296
|
+
typename DynamicVector::Scalar mean,
|
|
297
|
+
typename DynamicVector::Scalar sigma);
|
|
298
|
+
|
|
299
|
+
/// Generates a random dynamic size matrix from the Gaussian distribution, using the global random
|
|
300
|
+
/// number generator Random
|
|
301
|
+
template <typename DynamicMatrix>
|
|
302
|
+
[[nodiscard]] DynamicMatrix normal(
|
|
303
|
+
Eigen::Index rows,
|
|
304
|
+
Eigen::Index cols,
|
|
305
|
+
typename DynamicMatrix::Scalar mean,
|
|
306
|
+
typename DynamicMatrix::Scalar sigma);
|
|
307
|
+
|
|
308
|
+
} // namespace momentum
|
|
309
|
+
|
|
310
|
+
#include <momentum/math/random-inl.h>
|
|
@@ -0,0 +1,40 @@
|
|
|
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/generalized_loss.h>
|
|
11
|
+
#include <momentum/simd/simd.h>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
/// SIMD version of the generalized loss function.
|
|
16
|
+
template <typename T>
|
|
17
|
+
class SimdGeneralizedLossT : public GeneralizedLossT<T> {
|
|
18
|
+
public:
|
|
19
|
+
using Base = GeneralizedLossT<T>;
|
|
20
|
+
|
|
21
|
+
/// Constructs a SIMD generalized loss function
|
|
22
|
+
///
|
|
23
|
+
/// @param a Alpha parameter controlling the shape of the loss function
|
|
24
|
+
/// @param c Scale parameter controlling the width of the quadratic region
|
|
25
|
+
explicit SimdGeneralizedLossT(const T& a = Base::kL2, const T& c = T(1));
|
|
26
|
+
|
|
27
|
+
/// Computes the loss value for a given squared error
|
|
28
|
+
///
|
|
29
|
+
/// @param sqrError Squared error term (SIMD packet)
|
|
30
|
+
/// @return Loss value as a SIMD packet
|
|
31
|
+
[[nodiscard]] Packet<T> value(const Packet<T>& sqrError) const;
|
|
32
|
+
|
|
33
|
+
/// Computes the derivative of the loss function
|
|
34
|
+
///
|
|
35
|
+
/// @param sqrError Squared error term (SIMD packet)
|
|
36
|
+
/// @return Derivative value as a SIMD packet
|
|
37
|
+
[[nodiscard]] Packet<T> deriv(const Packet<T>& sqrError) const;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
} // namespace momentum
|
|
@@ -0,0 +1,229 @@
|
|
|
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/types.h>
|
|
11
|
+
|
|
12
|
+
#include <Eigen/Core>
|
|
13
|
+
#include <Eigen/Geometry>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
/// Lightweight transform with separate rotation, translation, and uniform scaling
|
|
18
|
+
///
|
|
19
|
+
/// This class provides a more efficient alternative to Eigen's Affine3 for transformations
|
|
20
|
+
/// that only involve rotation, translation, and uniform scaling. It stores these components
|
|
21
|
+
/// separately, which allows for more efficient operations and memory usage.
|
|
22
|
+
///
|
|
23
|
+
/// @tparam T The scalar type (float or double)
|
|
24
|
+
template <typename T>
|
|
25
|
+
struct TransformT {
|
|
26
|
+
Quaternion<T> rotation;
|
|
27
|
+
Vector3<T> translation;
|
|
28
|
+
T scale;
|
|
29
|
+
|
|
30
|
+
/// Creates a transform with only rotation
|
|
31
|
+
[[nodiscard]] static TransformT<T> makeRotation(const Quaternion<T>& rotation_in);
|
|
32
|
+
|
|
33
|
+
/// Creates a transform with only translation
|
|
34
|
+
[[nodiscard]] static TransformT<T> makeTranslation(const Vector3<T>& translation_in);
|
|
35
|
+
|
|
36
|
+
/// Creates a transform with only scaling
|
|
37
|
+
[[nodiscard]] static TransformT<T> makeScale(const T& scale_in);
|
|
38
|
+
|
|
39
|
+
/// Creates a random transform
|
|
40
|
+
///
|
|
41
|
+
/// @param[in] translation If true, use random translation (-1 to 1)
|
|
42
|
+
/// @param[in] rotation If true, use random rotation
|
|
43
|
+
/// @param[in] scale If true, use random scale (0.5 to 2.0)
|
|
44
|
+
[[nodiscard]] static TransformT<T>
|
|
45
|
+
makeRandom(bool translation = true, bool rotation = true, bool scale = true);
|
|
46
|
+
|
|
47
|
+
/// Converts from Eigen's Affine3
|
|
48
|
+
[[nodiscard]] static TransformT<T> fromAffine3(const Affine3<T>& other);
|
|
49
|
+
|
|
50
|
+
/// Converts from 4x4 matrix
|
|
51
|
+
[[nodiscard]] static TransformT<T> fromMatrix(const Matrix4<T>& other);
|
|
52
|
+
|
|
53
|
+
/// Creates identity transform
|
|
54
|
+
TransformT() : rotation(Quaternion<T>::Identity()), translation(Vector3<T>::Zero()), scale(1) {
|
|
55
|
+
// Empty
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/// Copy constructor with type conversion
|
|
59
|
+
///
|
|
60
|
+
/// @tparam T2 Source scalar type
|
|
61
|
+
template <typename T2>
|
|
62
|
+
explicit TransformT(const TransformT<T2>& other)
|
|
63
|
+
: rotation(other.rotation.template cast<T>()),
|
|
64
|
+
translation(other.translation.template cast<T>()),
|
|
65
|
+
scale(other.scale) {
|
|
66
|
+
// Empty
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/// Constructor with components
|
|
70
|
+
explicit TransformT(
|
|
71
|
+
const Vector3<T>& translation_in,
|
|
72
|
+
const Quaternion<T>& rotation_in = Quaternion<T>::Identity(),
|
|
73
|
+
const T& scale_in = T(1))
|
|
74
|
+
: rotation(rotation_in), translation(translation_in), scale(scale_in) {
|
|
75
|
+
// Empty
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/// Move constructor
|
|
79
|
+
explicit TransformT(
|
|
80
|
+
Vector3<T>&& translation_in,
|
|
81
|
+
Quaternion<T>&& rotation_in = Quaternion<T>::Identity(),
|
|
82
|
+
T&& scale_in = T(1))
|
|
83
|
+
: rotation(std::move(rotation_in)),
|
|
84
|
+
translation(std::move(translation_in)),
|
|
85
|
+
scale(std::move(scale_in)) {
|
|
86
|
+
// Empty
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/// Constructor from Affine3
|
|
90
|
+
explicit TransformT(const Affine3<T>& other) {
|
|
91
|
+
*this = fromAffine3(other);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/// Constructor from 4x4 matrix
|
|
95
|
+
explicit TransformT(const Matrix4<T>& other) {
|
|
96
|
+
*this = fromMatrix(other);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/// Assignment from Affine3
|
|
100
|
+
TransformT<T>& operator=(const Affine3<T>& other) {
|
|
101
|
+
*this = fromAffine3(other);
|
|
102
|
+
return *this;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/// Assignment from 4x4 matrix
|
|
106
|
+
TransformT<T>& operator=(const Matrix4<T>& other) {
|
|
107
|
+
*this = fromMatrix(other);
|
|
108
|
+
return *this;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/// Combines transforms (applies other first, then this)
|
|
112
|
+
[[nodiscard]] TransformT<T> operator*(const TransformT<T>& other) const {
|
|
113
|
+
// [ s_1*R_1 t_1 ] * [ s_2*R_2 t_2 ] = [ s_1*s_2*R_1*R_2 s_1*R_1*t_2 + t_1 ]
|
|
114
|
+
// [ 0 1 ] [ 0 1 ] [ 0 1 ]
|
|
115
|
+
const Vector3<T> trans = translation + rotation * (scale * other.translation);
|
|
116
|
+
const Quaternion<T> rot = rotation * other.rotation;
|
|
117
|
+
const T newScale = scale * other.scale;
|
|
118
|
+
return TransformT<T>(std::move(trans), std::move(rot), std::move(newScale));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/// Multiplies with Affine3
|
|
122
|
+
[[nodiscard]] Affine3<T> operator*(const Affine3<T>& other) const {
|
|
123
|
+
Affine3<T> out = Affine3<T>::Identity();
|
|
124
|
+
out.linear().noalias() = toLinear() * other.linear();
|
|
125
|
+
out.translation().noalias() = rotation * (scale * other.translation()) + translation;
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/// Transforms a point
|
|
130
|
+
[[nodiscard]] Vector3<T> operator*(const Vector3<T>& other) const {
|
|
131
|
+
return transformPoint(other);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/// Converts to Affine3
|
|
135
|
+
explicit operator Affine3<T>() const {
|
|
136
|
+
return toAffine3();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/// Converts to Affine3
|
|
140
|
+
[[nodiscard]] Affine3<T> toAffine3() const;
|
|
141
|
+
|
|
142
|
+
/// Converts to 4x4 matrix
|
|
143
|
+
[[nodiscard]] Matrix4<T> toMatrix() const {
|
|
144
|
+
Matrix4<T> out = Matrix4<T>::Zero();
|
|
145
|
+
out.template topLeftCorner<3, 3>().noalias() = rotation.toRotationMatrix() * scale;
|
|
146
|
+
out.template topRightCorner<3, 1>() = translation;
|
|
147
|
+
out(3, 3) = T(1);
|
|
148
|
+
return out;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/// Returns rotation as 3x3 matrix
|
|
152
|
+
[[nodiscard]] Matrix3<T> toRotationMatrix() const {
|
|
153
|
+
return rotation.toRotationMatrix();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/// Returns rotation*scale as 3x3 matrix
|
|
157
|
+
[[nodiscard]] Matrix3<T> toLinear() const {
|
|
158
|
+
return toRotationMatrix() * scale;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/// Gets the X axis of the rotation
|
|
162
|
+
[[nodiscard]] Vector3<T> getAxisX() const {
|
|
163
|
+
// Optimized version of Eigen::Quaternion::toRotationMatrix()
|
|
164
|
+
Vector3<T> axis;
|
|
165
|
+
|
|
166
|
+
const T ty = T(2) * rotation.y();
|
|
167
|
+
const T tz = T(2) * rotation.z();
|
|
168
|
+
const T twy = ty * rotation.w();
|
|
169
|
+
const T twz = tz * rotation.w();
|
|
170
|
+
const T txy = ty * rotation.x();
|
|
171
|
+
const T txz = tz * rotation.x();
|
|
172
|
+
const T tyy = ty * rotation.y();
|
|
173
|
+
const T tzz = tz * rotation.z();
|
|
174
|
+
|
|
175
|
+
axis[0] = T(1) - (tyy + tzz);
|
|
176
|
+
axis[1] = txy + twz;
|
|
177
|
+
axis[2] = txz - twy;
|
|
178
|
+
|
|
179
|
+
return axis;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/// Applies full transform to a point
|
|
183
|
+
[[nodiscard]] Vector3<T> transformPoint(const Vector3<T>& pt) const {
|
|
184
|
+
return translation + rotation * (scale * pt).eval();
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/// Applies only rotation to a vector
|
|
188
|
+
[[nodiscard]] Vector3<T> rotate(const Vector3<T>& vec) const;
|
|
189
|
+
|
|
190
|
+
/// Computes inverse transform
|
|
191
|
+
[[nodiscard]] TransformT<T> inverse() const;
|
|
192
|
+
|
|
193
|
+
/// Converts to different scalar type
|
|
194
|
+
///
|
|
195
|
+
/// @tparam T2 Target scalar type
|
|
196
|
+
template <typename T2>
|
|
197
|
+
[[nodiscard]] TransformT<T2> cast() const {
|
|
198
|
+
return TransformT<T2>(
|
|
199
|
+
this->translation.template cast<T2>(),
|
|
200
|
+
this->rotation.template cast<T2>(),
|
|
201
|
+
static_cast<T2>(this->scale));
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/// Checks if this transform is approximately equal to another
|
|
205
|
+
[[nodiscard]] bool isApprox(
|
|
206
|
+
const TransformT<T>& other,
|
|
207
|
+
T tol = Eigen::NumTraits<T>::dummy_precision()) const {
|
|
208
|
+
// TODO: Improve
|
|
209
|
+
return toAffine3().isApprox(other.toAffine3(), tol);
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
template <typename T>
|
|
214
|
+
using TransformListT =
|
|
215
|
+
std::vector<TransformT<T>>; // structure describing a the state of all joints in a skeleton
|
|
216
|
+
|
|
217
|
+
template <typename T>
|
|
218
|
+
TransformT<T> blendTransforms(
|
|
219
|
+
gsl::span<const TransformT<T>> transforms,
|
|
220
|
+
gsl::span<const T> weights);
|
|
221
|
+
|
|
222
|
+
/// Spherical linear interpolation between two transforms
|
|
223
|
+
template <typename T>
|
|
224
|
+
TransformT<T> slerp(const TransformT<T>& t1, const TransformT<T>& t2, T weight);
|
|
225
|
+
|
|
226
|
+
using Transform = TransformT<float>;
|
|
227
|
+
using TransformList = TransformListT<float>;
|
|
228
|
+
|
|
229
|
+
} // namespace momentum
|