gitextract_8dwelvlz/ ├── .coveragerc ├── .github/ │ └── workflows/ │ └── python-package.yml ├── .gitignore ├── CITATION.cff ├── CONTRIBUTING.md ├── LICENSE ├── MANIFEST.in ├── README.md ├── doc/ │ ├── Makefile │ ├── make.bat │ └── source/ │ ├── _static/ │ │ ├── custom.css │ │ └── overview.tex │ ├── _templates/ │ │ ├── class.rst │ │ ├── class_without_inherited.rst │ │ └── function.rst │ ├── api.rst │ ├── conf.py │ ├── index.rst │ ├── install.rst │ └── user_guide/ │ ├── camera.rst │ ├── euler_angles.rst │ ├── index.rst │ ├── introduction.rst │ ├── rotations.rst │ ├── transform_manager.rst │ ├── transformation_ambiguities.rst │ ├── transformation_modeling.rst │ ├── transformation_over_time.rst │ ├── transformations.rst │ └── uncertainty.rst ├── examples/ │ ├── README.rst │ ├── animations/ │ │ ├── README.rst │ │ ├── animate_angle_axis_interpolation.py │ │ ├── animate_camera.py │ │ ├── animate_quaternion_integration.py │ │ ├── animate_quaternion_interpolation.py │ │ ├── animate_rotation.py │ │ └── animate_trajectory.py │ ├── apps/ │ │ ├── README.rst │ │ └── app_transformation_editor.py │ ├── plots/ │ │ ├── README.rst │ │ ├── plot_axis_angle.py │ │ ├── plot_axis_angle_from_two_vectors.py │ │ ├── plot_bivector.py │ │ ├── plot_box.py │ │ ├── plot_camera_3d.py │ │ ├── plot_camera_projection.py │ │ ├── plot_camera_trajectory.py │ │ ├── plot_camera_with_image.py │ │ ├── plot_collision_objects.py │ │ ├── plot_compare_rotations.py │ │ ├── plot_concatenate_uncertain_transforms.py │ │ ├── plot_convention_rotation_global_local.py │ │ ├── plot_cylinder.py │ │ ├── plot_dual_quaternion_interpolation.py │ │ ├── plot_euler_angles.py │ │ ├── plot_frames.py │ │ ├── plot_interpolation_for_transform_manager.py │ │ ├── plot_invert_uncertain_transform.py │ │ ├── plot_matrix_from_two_vectors.py │ │ ├── plot_mesh.py │ │ ├── plot_polar_decomposition.py │ │ ├── plot_pose_fusion.py │ │ ├── plot_pose_trajectory.py │ │ ├── plot_quaternion_integrate.py │ │ ├── plot_quaternion_slerp.py │ │ ├── plot_random_geometries.py │ │ ├── plot_random_trajectories.py │ │ ├── plot_robot.py │ │ ├── plot_rotate_cylinder.py │ │ ├── plot_sample_rotations.py │ │ ├── plot_sample_transforms.py │ │ ├── plot_screw.py │ │ ├── plot_sphere.py │ │ ├── plot_spheres.py │ │ ├── plot_spherical_grid.py │ │ ├── plot_straight_line_path.py │ │ ├── plot_transform.py │ │ ├── plot_transform_concatenation.py │ │ ├── plot_transform_manager.py │ │ ├── plot_urdf.py │ │ ├── plot_urdf_with_meshes.py │ │ └── plot_vector.py │ └── visualizations/ │ ├── README.rst │ ├── vis_add_remove_artist.py │ ├── vis_basis.py │ ├── vis_box.py │ ├── vis_camera_3d.py │ ├── vis_capsule.py │ ├── vis_cone.py │ ├── vis_cylinder.py │ ├── vis_ee_wrench.py │ ├── vis_ellipsoid.py │ ├── vis_mesh.py │ ├── vis_moving_basis.py │ ├── vis_moving_cylinder_with_wrench.py │ ├── vis_moving_line.py │ ├── vis_moving_robot.py │ ├── vis_moving_trajectory.py │ ├── vis_moving_urdf_with_meshes.py │ ├── vis_plane.py │ ├── vis_probabilistic_robot_kinematics.py │ ├── vis_scatter.py │ ├── vis_sphere.py │ ├── vis_urdf.py │ ├── vis_urdf_with_meshes.py │ └── vis_vector.py ├── manifest.xml ├── paper/ │ ├── paper.bib │ └── paper.md ├── pyproject.toml ├── pytransform3d/ │ ├── __init__.py │ ├── _geometry.py │ ├── _geometry.pyi │ ├── _mesh_loader.py │ ├── _mesh_loader.pyi │ ├── batch_rotations/ │ │ ├── __init__.py │ │ ├── _angle.py │ │ ├── _angle.pyi │ │ ├── _axis_angle.py │ │ ├── _axis_angle.pyi │ │ ├── _euler.py │ │ ├── _euler.pyi │ │ ├── _matrix.py │ │ ├── _matrix.pyi │ │ ├── _quaternion.py │ │ ├── _quaternion.pyi │ │ ├── _utils.py │ │ ├── _utils.pyi │ │ └── test/ │ │ └── test_batch_rotations.py │ ├── camera.py │ ├── camera.pyi │ ├── coordinates.py │ ├── coordinates.pyi │ ├── editor.py │ ├── plot_utils/ │ │ ├── __init__.py │ │ ├── _artists.py │ │ ├── _artists.pyi │ │ ├── _layout.py │ │ ├── _layout.pyi │ │ ├── _plot_geometries.py │ │ ├── _plot_geometries.pyi │ │ ├── _plot_helpers.py │ │ ├── _plot_helpers.pyi │ │ └── test/ │ │ └── test_plot_utils.py │ ├── py.typed │ ├── rotations/ │ │ ├── __init__.py │ │ ├── _angle.py │ │ ├── _angle.pyi │ │ ├── _axis_angle.py │ │ ├── _axis_angle.pyi │ │ ├── _constants.py │ │ ├── _euler.py │ │ ├── _euler.pyi │ │ ├── _euler_deprecated.py │ │ ├── _euler_deprecated.pyi │ │ ├── _jacobians.py │ │ ├── _jacobians.pyi │ │ ├── _matrix.py │ │ ├── _matrix.pyi │ │ ├── _mrp.py │ │ ├── _mrp.pyi │ │ ├── _plot.py │ │ ├── _plot.pyi │ │ ├── _polar_decomp.py │ │ ├── _polar_decomp.pyi │ │ ├── _quaternion.py │ │ ├── _quaternion.pyi │ │ ├── _random.py │ │ ├── _random.pyi │ │ ├── _rot_log.py │ │ ├── _rot_log.pyi │ │ ├── _rotors.py │ │ ├── _rotors.pyi │ │ ├── _slerp.py │ │ ├── _slerp.pyi │ │ ├── _utils.py │ │ ├── _utils.pyi │ │ └── test/ │ │ ├── test_angle.py │ │ ├── test_axis_angle.py │ │ ├── test_constants.py │ │ ├── test_euler.py │ │ ├── test_euler_deprecated.py │ │ ├── test_matrix.py │ │ ├── test_mrp.py │ │ ├── test_polar_decom.py │ │ ├── test_quaternion.py │ │ ├── test_rot_log.py │ │ ├── test_rotations_jacobians.py │ │ ├── test_rotations_random.py │ │ ├── test_rotor.py │ │ ├── test_slerp.py │ │ └── test_utils.py │ ├── test/ │ │ ├── test_camera.py │ │ ├── test_coordinates.py │ │ ├── test_geometry.py │ │ ├── test_mesh_loader.py │ │ └── test_urdf.py │ ├── trajectories/ │ │ ├── __init__.py │ │ ├── _dual_quaternions.py │ │ ├── _dual_quaternions.pyi │ │ ├── _plot.py │ │ ├── _plot.pyi │ │ ├── _pqs.py │ │ ├── _pqs_.pyi │ │ ├── _random.py │ │ ├── _random.pyi │ │ ├── _screws.py │ │ ├── _screws.pyi │ │ ├── _transforms.py │ │ ├── _transforms.pyi │ │ └── test/ │ │ └── test_trajectories.py │ ├── transform_manager/ │ │ ├── __init__.py │ │ ├── _temporal_transform_manager.py │ │ ├── _temporal_transform_manager.pyi │ │ ├── _transform_graph_base.py │ │ ├── _transform_graph_base.pyi │ │ ├── _transform_manager.py │ │ ├── _transform_manager.pyi │ │ └── test/ │ │ ├── test_temporal_transform_manager.py │ │ └── test_transform_manager.py │ ├── transformations/ │ │ ├── __init__.py │ │ ├── _dual_quaternion.py │ │ ├── _dual_quaternion.pyi │ │ ├── _jacobians.py │ │ ├── _jacobians.pyi │ │ ├── _plot.py │ │ ├── _plot.pyi │ │ ├── _pq.py │ │ ├── _pq.pyi │ │ ├── _random.py │ │ ├── _random.pyi │ │ ├── _screws.py │ │ ├── _screws.pyi │ │ ├── _transform.py │ │ ├── _transform.pyi │ │ ├── _transform_operations.py │ │ ├── _transform_operations.pyi │ │ └── test/ │ │ ├── test_dual_quaternion.py │ │ ├── test_pq.py │ │ ├── test_screws.py │ │ ├── test_transform.py │ │ ├── test_transform_operations.py │ │ ├── test_transformations_jacobians.py │ │ └── test_transformations_random.py │ ├── uncertainty/ │ │ ├── __init__.py │ │ ├── _composition.py │ │ ├── _composition.pyi │ │ ├── _frechet_mean.py │ │ ├── _frechet_mean.pyi │ │ ├── _fusion.py │ │ ├── _fusion.pyi │ │ ├── _invert.py │ │ ├── _invert.pyi │ │ ├── _plot.py │ │ ├── _plot.pyi │ │ └── test/ │ │ └── test_uncertainty.py │ ├── urdf.py │ ├── urdf.pyi │ └── visualizer/ │ ├── __init__.py │ ├── _artists.py │ ├── _artists.pyi │ ├── _figure.py │ └── _figure.pyi ├── requirements.txt ├── setup.cfg ├── setup.py └── test/ └── test_data/ ├── cone.stl ├── frame.ply ├── reconstruction_camera_matrix.csv ├── reconstruction_odometry.csv ├── robot_with_visuals.urdf ├── scan.stl ├── scene.mtl ├── scene.obj └── simple_mechanism.urdf