{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/on-the-continuity-of-rotation-representations","title":"On the Continuity of Rotation Representations in Neural Networks","arxiv_id":"1812.07035","date":"2018-12-17","proceeding":"CVPR 2019 6","authors":["Yi Zhou","Connelly Barnes","Jingwan Lu","Jimei Yang","Hao Li"],"abstract":"In neural networks, it is often desirable to work with various representations of the same space. For example, 3D rotations can be represented with quaternions or Euler angles. In this paper, we advance a definition of a continuous representation, which can be helpful for training deep neural networks. We relate this to topological concepts such as homeomorphism and embedding. We then investigate what are continuous and discontinuous representations for 2D, 3D, and n-dimensional rotations. We demonstrate that for 3D rotations, all representations are discontinuous in the real Euclidean spaces of four or fewer dimensions. Thus, widely used representations such as quaternions and Euler angles are discontinuous and difficult for neural networks to learn. We show that the 3D rotations have continuous representations in 5D and 6D, which are more suitable for learning. We also present continuous representations for the general case of the n-dimensional rotation group SO(n). While our main focus is on rotations, we also show that our constructions apply to other groups such as the orthogonal group and similarity transforms. We finally present empirical results, which show that our continuous rotation representations outperform discontinuous ones for several practical problems in graphics and vision, including a simple autoencoder sanity test, a rotation estimator for 3D point clouds, and an inverse kinematics solver for 3D human poses.","url_abs":"https://arxiv.org/abs/1812.07035v4","url_pdf":"https://arxiv.org/pdf/1812.07035v4.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"on-the-continuity-of-rotation-representations","repo_url":"https://github.com/Janus-Shiau/6d_rot_tensorflow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"on-the-continuity-of-rotation-representations","repo_url":"https://github.com/amakadia/svd_for_pose","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"on-the-continuity-of-rotation-representations","repo_url":"https://github.com/thu-ml/RoboticsDiffusionTransformer","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"on-the-continuity-of-rotation-representations","repo_url":"https://github.com/tik0/6d","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"on-the-continuity-of-rotation-representations","repo_url":"https://github.com/zawlin/6d_rot","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"on-the-continuity-of-rotation-representations","repo_url":"https://github.com/papagina/RotationContinuity","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1812.07035","atlas_url":"https://app.syntology.ai/?focus=1812.07035","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1812.07035"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/papagina/RotationContinuity","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Janus-Shiau/6d_rot_tensorflow","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/amakadia/svd_for_pose","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/thu-ml/RoboticsDiffusionTransformer","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tik0/6d","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zawlin/6d_rot","reach":{"status":"ok"}}],"summary":{"ran_honours":2,"ran_draft_wrong":1,"ran_fixture":1},"by_repo_kind":{"listed":{"samples":4,"ran":4,"repositories":2}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":3,"samples":[{"code_sha256_prefix":"ffdd3794cf297dc5","entry":"expand","repo":"tik0/6d","repo_kind":"listed","path":"6d.py","file_url":"https://github.com/tik0/6d/blob/HEAD/6d.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ffdd3794cf297dc5"}},{"code_sha256_prefix":"85a973eef1ff2263","entry":"load_dances","repo":"papagina/RotationContinuity","repo_kind":"listed","path":"Inverse_Kinematics/code/trainIK.py","file_url":"https://github.com/papagina/RotationContinuity/blob/HEAD/Inverse_Kinematics/code/trainIK.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"85a973eef1ff2263"}},{"code_sha256_prefix":"e521a4154d31fe2a","entry":"quat_to_so3","repo":"tik0/6d","repo_kind":"listed","path":"6d.py","file_url":"https://github.com/tik0/6d/blob/HEAD/6d.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"e521a4154d31fe2a"}},{"code_sha256_prefix":"96cd73223e096e8d","entry":"repmat_norm","repo":"tik0/6d","repo_kind":"listed","path":"6d.py","file_url":"https://github.com/tik0/6d/blob/HEAD/6d.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"96cd73223e096e8d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}