snappy 3.1.1__cp38-cp38-win_amd64.whl → 3.2__cp38-cp38-win_amd64.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.
- snappy/CyOpenGL.cp38-win_amd64.pyd +0 -0
- snappy/SnapPy.cp38-win_amd64.pyd +0 -0
- snappy/SnapPyHP.cp38-win_amd64.pyd +0 -0
- snappy/__init__.py +299 -402
- snappy/app.py +70 -20
- snappy/browser.py +18 -17
- snappy/canonical.py +249 -0
- snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
- snappy/cusps/cusp_area_matrix.py +101 -0
- snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
- snappy/cusps/maximal_cusp_area_matrix.py +136 -0
- snappy/cusps/test.py +21 -0
- snappy/cusps/trig_cusp_area_matrix.py +63 -0
- snappy/database.py +10 -9
- snappy/decorated_isosig.py +337 -114
- snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
- snappy/dev/extended_ptolemy/extended.py +3 -3
- snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
- snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
- snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
- snappy/doc/_images/m125_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
- snappy/doc/_sources/additional_classes.rst.txt +40 -40
- snappy/doc/_sources/bugs.rst.txt +14 -14
- snappy/doc/_sources/censuses.rst.txt +51 -51
- snappy/doc/_sources/credits.rst.txt +75 -75
- snappy/doc/_sources/development.rst.txt +259 -239
- snappy/doc/_sources/index.rst.txt +182 -115
- snappy/doc/_sources/installing.rst.txt +247 -264
- snappy/doc/_sources/manifold.rst.txt +6 -6
- snappy/doc/_sources/manifoldhp.rst.txt +46 -46
- snappy/doc/_sources/news.rst.txt +355 -283
- snappy/doc/_sources/other.rst.txt +25 -25
- snappy/doc/_sources/platonic_census.rst.txt +20 -20
- snappy/doc/_sources/plink.rst.txt +102 -102
- snappy/doc/_sources/ptolemy.rst.txt +66 -66
- snappy/doc/_sources/ptolemy_classes.rst.txt +42 -42
- snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -297
- snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -363
- snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -301
- snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -61
- snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -105
- snappy/doc/_sources/screenshots.rst.txt +21 -21
- snappy/doc/_sources/snap.rst.txt +87 -87
- snappy/doc/_sources/snappy.rst.txt +28 -28
- snappy/doc/_sources/spherogram.rst.txt +103 -103
- snappy/doc/_sources/todo.rst.txt +47 -47
- snappy/doc/_sources/triangulation.rst.txt +11 -11
- snappy/doc/_sources/tutorial.rst.txt +49 -49
- snappy/doc/_sources/verify.rst.txt +210 -150
- snappy/doc/_sources/verify_internals.rst.txt +79 -90
- snappy/doc/_static/basic.css +924 -902
- snappy/doc/_static/css/badge_only.css +1 -1
- snappy/doc/_static/css/theme.css +1 -1
- snappy/doc/_static/doctools.js +1 -1
- snappy/doc/_static/documentation_options.js +12 -13
- snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- snappy/doc/_static/js/versions.js +228 -0
- snappy/doc/_static/language_data.js +199 -199
- snappy/doc/_static/pygments.css +74 -73
- snappy/doc/_static/searchtools.js +125 -71
- snappy/doc/_static/snappy_furo.css +33 -33
- snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -42
- snappy/doc/_static/sphinx_highlight.js +13 -3
- snappy/doc/additional_classes.html +1499 -1330
- snappy/doc/bugs.html +131 -134
- snappy/doc/censuses.html +426 -445
- snappy/doc/credits.html +180 -183
- snappy/doc/development.html +383 -363
- snappy/doc/genindex.html +1330 -1409
- snappy/doc/index.html +261 -206
- snappy/doc/installing.html +345 -363
- snappy/doc/manifold.html +3451 -2839
- snappy/doc/manifoldhp.html +179 -182
- snappy/doc/news.html +387 -329
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +160 -162
- snappy/doc/platonic_census.html +374 -377
- snappy/doc/plink.html +209 -212
- snappy/doc/ptolemy.html +253 -255
- snappy/doc/ptolemy_classes.html +1143 -1146
- snappy/doc/ptolemy_examples1.html +408 -410
- snappy/doc/ptolemy_examples2.html +470 -473
- snappy/doc/ptolemy_examples3.html +413 -416
- snappy/doc/ptolemy_examples4.html +194 -197
- snappy/doc/ptolemy_prelim.html +247 -250
- snappy/doc/py-modindex.html +164 -167
- snappy/doc/screenshots.html +140 -142
- snappy/doc/search.html +134 -137
- snappy/doc/searchindex.js +1 -1
- snappy/doc/snap.html +201 -204
- snappy/doc/snappy.html +180 -182
- snappy/doc/spherogram.html +1210 -1213
- snappy/doc/todo.html +165 -168
- snappy/doc/triangulation.html +1583 -1474
- snappy/doc/tutorial.html +158 -161
- snappy/doc/verify.html +329 -275
- snappy/doc/verify_internals.html +1234 -1691
- snappy/drilling/__init__.py +153 -235
- snappy/drilling/barycentric.py +103 -0
- snappy/drilling/constants.py +0 -2
- snappy/drilling/crush.py +56 -130
- snappy/drilling/cusps.py +12 -6
- snappy/drilling/debug.py +2 -1
- snappy/drilling/exceptions.py +7 -40
- snappy/drilling/moves.py +302 -243
- snappy/drilling/perturb.py +63 -37
- snappy/drilling/shorten.py +36 -0
- snappy/drilling/subdivide.py +0 -5
- snappy/drilling/test.py +23 -0
- snappy/drilling/test_cases.py +126 -0
- snappy/drilling/tracing.py +9 -37
- snappy/exceptions.py +18 -5
- snappy/exterior_to_link/barycentric_geometry.py +2 -4
- snappy/exterior_to_link/main.py +8 -7
- snappy/exterior_to_link/mcomplex_with_link.py +2 -2
- snappy/exterior_to_link/rational_linear_algebra.py +1 -1
- snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
- snappy/exterior_to_link/test.py +21 -33
- snappy/geometric_structure/__init__.py +212 -0
- snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
- snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
- snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
- snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
- snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
- snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
- snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
- snappy/geometric_structure/geodesic/__init__.py +0 -0
- snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
- snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
- snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
- snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
- snappy/geometric_structure/geodesic/constants.py +6 -0
- snappy/geometric_structure/geodesic/exceptions.py +22 -0
- snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
- snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
- snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
- snappy/geometric_structure/geodesic/line.py +30 -0
- snappy/geometric_structure/geodesic/multiplicity.py +127 -0
- snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
- snappy/geometric_structure/test.py +22 -0
- snappy/gui.py +23 -13
- snappy/horoviewer.py +7 -7
- snappy/hyperboloid/__init__.py +96 -31
- snappy/hyperboloid/distances.py +245 -0
- snappy/hyperboloid/horoball.py +19 -0
- snappy/hyperboloid/line.py +35 -0
- snappy/hyperboloid/point.py +9 -0
- snappy/hyperboloid/triangle.py +29 -0
- snappy/isometry_signature.py +382 -0
- snappy/len_spec/__init__.py +596 -0
- snappy/len_spec/geodesic_info.py +110 -0
- snappy/len_spec/geodesic_key_info_dict.py +117 -0
- snappy/len_spec/geodesic_piece.py +143 -0
- snappy/len_spec/geometric_structure.py +182 -0
- snappy/len_spec/geometry.py +80 -0
- snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
- snappy/len_spec/spine.py +206 -0
- snappy/len_spec/test.py +24 -0
- snappy/len_spec/test_cases.py +69 -0
- snappy/len_spec/tile.py +275 -0
- snappy/len_spec/word.py +86 -0
- snappy/math_basics.py +39 -13
- snappy/matrix.py +52 -9
- snappy/number.py +12 -6
- snappy/numeric_output_checker.py +2 -3
- snappy/pari.py +8 -4
- snappy/phone_home.py +2 -1
- snappy/polyviewer.py +8 -8
- snappy/ptolemy/__init__.py +1 -1
- snappy/ptolemy/component.py +2 -2
- snappy/ptolemy/coordinates.py +25 -25
- snappy/ptolemy/findLoops.py +9 -9
- snappy/ptolemy/manifoldMethods.py +27 -29
- snappy/ptolemy/polynomial.py +50 -57
- snappy/ptolemy/processFileBase.py +60 -0
- snappy/ptolemy/ptolemyVariety.py +109 -41
- snappy/ptolemy/reginaWrapper.py +4 -4
- snappy/ptolemy/rur.py +1 -1
- snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
- snappy/ptolemy/test.py +99 -54
- snappy/ptolemy/utilities.py +1 -1
- snappy/raytracing/__init__.py +64 -0
- snappy/raytracing/additional_horospheres.py +64 -0
- snappy/raytracing/additional_len_spec_choices.py +63 -0
- snappy/raytracing/cohomology_fractal.py +0 -3
- snappy/raytracing/eyeball.py +123 -0
- snappy/raytracing/finite_raytracing_data.py +17 -17
- snappy/raytracing/finite_viewer.py +15 -15
- snappy/raytracing/geodesic_tube_info.py +93 -63
- snappy/raytracing/geodesics.py +94 -64
- snappy/raytracing/geodesics_window.py +56 -34
- snappy/raytracing/gui_utilities.py +21 -6
- snappy/raytracing/hyperboloid_navigation.py +29 -4
- snappy/raytracing/hyperboloid_utilities.py +73 -73
- snappy/raytracing/ideal_raytracing_data.py +121 -91
- snappy/raytracing/inside_viewer.py +199 -66
- snappy/raytracing/pack.py +22 -0
- snappy/raytracing/raytracing_data.py +37 -25
- snappy/raytracing/raytracing_view.py +70 -65
- snappy/raytracing/shaders/Eye.png +0 -0
- snappy/raytracing/shaders/NonGeometric.png +0 -0
- snappy/raytracing/shaders/__init__.py +39 -3
- snappy/raytracing/shaders/fragment.glsl +451 -133
- snappy/raytracing/test.py +29 -0
- snappy/raytracing/tooltip.py +146 -0
- snappy/raytracing/upper_halfspace_utilities.py +42 -9
- snappy/sage_helper.py +67 -134
- snappy/settings.py +90 -77
- snappy/shell.py +2 -0
- snappy/snap/character_varieties.py +2 -2
- snappy/snap/find_field.py +4 -3
- snappy/snap/fundamental_polyhedron.py +2 -2
- snappy/snap/kernel_structures.py +5 -1
- snappy/snap/nsagetools.py +9 -8
- snappy/snap/peripheral/dual_cellulation.py +4 -3
- snappy/snap/peripheral/peripheral.py +2 -2
- snappy/snap/peripheral/surface.py +5 -5
- snappy/snap/peripheral/test.py +1 -1
- snappy/snap/polished_reps.py +8 -8
- snappy/snap/slice_obs_HKL.py +16 -14
- snappy/snap/t3mlite/arrow.py +3 -3
- snappy/snap/t3mlite/edge.py +3 -3
- snappy/snap/t3mlite/homology.py +2 -2
- snappy/snap/t3mlite/mcomplex.py +3 -3
- snappy/snap/t3mlite/simplex.py +12 -0
- snappy/snap/t3mlite/spun.py +18 -17
- snappy/snap/t3mlite/test_vs_regina.py +4 -4
- snappy/snap/test.py +37 -53
- snappy/snap/utilities.py +4 -5
- snappy/test.py +121 -138
- snappy/test_cases.py +263 -0
- snappy/testing.py +131 -0
- snappy/tiling/__init__.py +2 -0
- snappy/tiling/canonical_key_dict.py +59 -0
- snappy/tiling/dict_based_set.py +79 -0
- snappy/tiling/floor.py +49 -0
- snappy/tiling/hyperboloid_dict.py +54 -0
- snappy/tiling/iter_utils.py +78 -0
- snappy/tiling/lifted_tetrahedron.py +22 -0
- snappy/tiling/lifted_tetrahedron_set.py +54 -0
- snappy/tiling/real_hash_dict.py +164 -0
- snappy/tiling/test.py +23 -0
- snappy/tiling/tile.py +215 -0
- snappy/tiling/triangle.py +33 -0
- snappy/tkterminal.py +113 -84
- snappy/twister/main.py +1 -7
- snappy/twister/twister_core.cp38-win_amd64.pyd +0 -0
- snappy/upper_halfspace/__init__.py +78 -17
- snappy/verify/__init__.py +3 -7
- snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
- snappy/verify/complex_volume/adjust_torsion.py +1 -2
- snappy/verify/complex_volume/closed.py +13 -13
- snappy/verify/complex_volume/cusped.py +6 -6
- snappy/verify/complex_volume/extended_bloch.py +5 -8
- snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
- snappy/verify/edge_equations.py +80 -0
- snappy/verify/exceptions.py +0 -55
- snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
- snappy/verify/interval_newton_shapes_engine.py +7 -5
- snappy/verify/interval_tree.py +5 -5
- snappy/verify/krawczyk_shapes_engine.py +17 -18
- snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
- snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
- snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
- snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
- snappy/verify/shapes.py +5 -3
- snappy/verify/short_slopes.py +39 -41
- snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
- snappy/verify/test.py +57 -60
- snappy/verify/upper_halfspace/extended_matrix.py +1 -1
- snappy/verify/upper_halfspace/finite_point.py +3 -4
- snappy/verify/upper_halfspace/ideal_point.py +9 -9
- snappy/verify/volume.py +2 -2
- snappy/version.py +2 -2
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +14 -10
- snappy-3.2.dist-info/RECORD +503 -0
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
- snappy/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/__pycache__/browser.cpython-38.pyc +0 -0
- snappy/__pycache__/cache.cpython-38.pyc +0 -0
- snappy/__pycache__/database.cpython-38.pyc +0 -0
- snappy/__pycache__/db_utilities.cpython-38.pyc +0 -0
- snappy/__pycache__/decorated_isosig.cpython-38.pyc +0 -0
- snappy/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/__pycache__/export_stl.cpython-38.pyc +0 -0
- snappy/__pycache__/filedialog.cpython-38.pyc +0 -0
- snappy/__pycache__/gui.cpython-38.pyc +0 -0
- snappy/__pycache__/horoviewer.cpython-38.pyc +0 -0
- snappy/__pycache__/math_basics.cpython-38.pyc +0 -0
- snappy/__pycache__/matrix.cpython-38.pyc +0 -0
- snappy/__pycache__/number.cpython-38.pyc +0 -0
- snappy/__pycache__/numeric_output_checker.cpython-38.pyc +0 -0
- snappy/__pycache__/pari.cpython-38.pyc +0 -0
- snappy/__pycache__/polyviewer.cpython-38.pyc +0 -0
- snappy/__pycache__/sage_helper.cpython-38.pyc +0 -0
- snappy/__pycache__/version.cpython-38.pyc +0 -0
- snappy/doc/_sources/verify_canon.rst.txt +0 -90
- snappy/doc/_static/jquery-3.6.0.js +0 -10881
- snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
- snappy/doc/_static/js/html5shiv.min.js +0 -4
- snappy/doc/_static/underscore-1.13.1.js +0 -2042
- snappy/doc/_static/underscore.js +0 -6
- snappy/doc/verify_canon.html +0 -304
- snappy/drilling/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/constants.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/crush.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/cusps.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/debug.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/epsilons.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/fixed_points.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_info.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_tube.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geometric_structure.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/line.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/moves.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/peripheral_curves.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/perturb.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/quotient_space.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/spatial_dict.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/subdivide.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/tracing.cpython-38.pyc +0 -0
- snappy/drilling/geodesic_tube.py +0 -441
- snappy/drilling/geometric_structure.py +0 -366
- snappy/drilling/line.py +0 -122
- snappy/drilling/quotient_space.py +0 -94
- snappy/drilling/spatial_dict.py +0 -128
- snappy/exterior_to_link/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/hyp_utils.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/link_projection.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/main.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/pl_utils.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/put_in_S3.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/stored_moves.cpython-38.pyc +0 -0
- snappy/hyperboloid/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/manifolds/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/component.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/coordinates.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/fieldExtensions.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/findLoops.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/homology.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/manifoldMethods.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/matrix.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/polynomial.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processComponents.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileBase.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileDispatch.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processMagmaFile.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processRurFile.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVariety.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/rur.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/utilities.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/character_varieties.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/fundamental_polyhedron.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/interval_reps.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/kernel_structures.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/mcomplex_base.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/nsagetools.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/polished_reps.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/shapes.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/slice_obs_HKL.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/utilities.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/link.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/peripheral.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/surface.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/arrow.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/corner.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/edge.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/face.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/files.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/homology.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/linalg.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/mcomplex.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/perm4.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/simplex.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/spun.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/surface.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/vertex.cpython-38.pyc +0 -0
- snappy/togl/__init__.py +0 -3
- snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/twister/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/twister/__pycache__/main.cpython-38.pyc +0 -0
- snappy/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cuspCrossSection.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cuspTranslations.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cusp_areas.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cusp_shapes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/interval_tree.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/realAlgebra.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/shapes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/short_slopes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/squareExtensions.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/verifyCanonical.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/verifyHyperbolicity.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/volume.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/closed.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/cusped.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-38.pyc +0 -0
- snappy/verify/cuspCrossSection.py +0 -1422
- snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-38.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
- snappy-3.1.1.dist-info/RECORD +0 -575
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -1,12 +1,12 @@
|
|
1
|
-
from
|
2
|
-
from
|
1
|
+
from ..snap import t3mlite as t3m
|
2
|
+
from ..snap.t3mlite import simplex
|
3
|
+
from .. import Triangulation
|
3
4
|
|
4
|
-
from
|
5
|
-
|
6
|
-
from snappy.snap.mcomplex_base import *
|
7
|
-
|
8
|
-
from snappy.verify.cuspCrossSection import *
|
5
|
+
from ..matrix import make_matrix, make_vector
|
9
6
|
|
7
|
+
from ..snap.mcomplex_base import *
|
8
|
+
from ..geometric_structure.cusp_neighborhood.complex_cusp_cross_section import ComplexCuspCrossSection
|
9
|
+
from ..geometric_structure import add_r13_planes_to_tetrahedra
|
10
10
|
from ..upper_halfspace import pgl2c_to_o13, sl2c_inverse
|
11
11
|
from ..upper_halfspace.ideal_point import ideal_point_to_r13
|
12
12
|
|
@@ -15,8 +15,6 @@ from .upper_halfspace_utilities import *
|
|
15
15
|
|
16
16
|
from .raytracing_data import *
|
17
17
|
|
18
|
-
from math import sqrt
|
19
|
-
|
20
18
|
__all__ = ['IdealRaytracingData']
|
21
19
|
|
22
20
|
|
@@ -25,7 +23,6 @@ class IdealRaytracingData(RaytracingData):
|
|
25
23
|
Given a SnapPy manifold, computes data for the shader fragment.glsl
|
26
24
|
to raytrace the inside view::
|
27
25
|
|
28
|
-
>>> from snappy import *
|
29
26
|
>>> data = IdealRaytracingData.from_manifold(Manifold("m004"))
|
30
27
|
>>> data = IdealRaytracingData.from_manifold(ManifoldHP("m004"))
|
31
28
|
|
@@ -43,19 +40,19 @@ class IdealRaytracingData(RaytracingData):
|
|
43
40
|
The shader needs to know in what tetrahedron and where in the tetrahedron
|
44
41
|
the camera is. This is encoded as pair matrix and tetrahedron index::
|
45
42
|
|
46
|
-
>>> view_state = (
|
47
|
-
...
|
48
|
-
...
|
49
|
-
...
|
43
|
+
>>> view_state = (make_matrix([[ 1.0, 0.0, 0.0, 0.0],
|
44
|
+
... [ 0.0, 1.0, 0.0, 0.0],
|
45
|
+
... [ 0.0, 0.0, 0.0,-1.0],
|
46
|
+
... [ 0.0, 0.0, 1.0, 0.0]]), 0, 0.0)
|
50
47
|
|
51
48
|
To move/rotate the camera which might potentially put the camera
|
52
49
|
into a different tetrahedron, the new pair can be computed as
|
53
50
|
follows::
|
54
51
|
|
55
|
-
>>> m =
|
56
|
-
...
|
57
|
-
...
|
58
|
-
...
|
52
|
+
>>> m = make_matrix([[ 3.0 , 0.0 , 2.82, 0.0 ],
|
53
|
+
... [ 0.0 , 1.0 , 0.0 , 0.0 ],
|
54
|
+
... [ 2.82, 0.0 , 3.0 , 0.0 ],
|
55
|
+
... [ 0.0 , 0.0 , 0.0 , 1.0 ]])
|
59
56
|
>>> view_state = data.update_view_state(view_state, m)
|
60
57
|
>>> view_state # doctest: +NUMERIC6
|
61
58
|
([ 1.08997684 1e-16 0.43364676 1e-16 ]
|
@@ -70,8 +67,7 @@ class IdealRaytracingData(RaytracingData):
|
|
70
67
|
areas=None, insphere_scale=0.05, weights=None):
|
71
68
|
|
72
69
|
if manifold.solution_type() != 'all tetrahedra positively oriented':
|
73
|
-
return NonGeometricRaytracingData(
|
74
|
-
t3m.Mcomplex(manifold))
|
70
|
+
return NonGeometricRaytracingData.from_manifold(manifold)
|
75
71
|
|
76
72
|
num_cusps = manifold.num_cusps()
|
77
73
|
|
@@ -107,15 +103,20 @@ class IdealRaytracingData(RaytracingData):
|
|
107
103
|
r.peripheral_gluing_equations = snappy_trig.gluing_equations()[
|
108
104
|
snappy_trig.num_tetrahedra():]
|
109
105
|
|
106
|
+
r.log_shapes = [
|
107
|
+
tet.ShapeParameters[e].log()
|
108
|
+
for tet in c.mcomplex.Tetrahedra
|
109
|
+
for e in [ t3m.E01, t3m.E02, t3m.E03 ] ]
|
110
|
+
|
110
111
|
r._add_complex_vertices()
|
111
112
|
r._add_R13_vertices()
|
112
113
|
r._add_O13_matrices_to_faces()
|
113
|
-
|
114
|
+
add_r13_planes_to_tetrahedra(c.mcomplex)
|
114
115
|
r._add_R13_horosphere_scales_to_vertices()
|
115
116
|
r._add_cusp_to_tet_matrices()
|
116
117
|
r._add_margulis_tube_ends()
|
117
118
|
r._add_inspheres()
|
118
|
-
r.
|
119
|
+
r._add_to_standard_torus_matrices()
|
119
120
|
|
120
121
|
r._add_cusp_triangle_vertex_positions()
|
121
122
|
|
@@ -123,7 +124,7 @@ class IdealRaytracingData(RaytracingData):
|
|
123
124
|
return r
|
124
125
|
|
125
126
|
def __init__(self, mcomplex, snappy_manifold):
|
126
|
-
super(
|
127
|
+
super().__init__(mcomplex)
|
127
128
|
self.snappy_manifold = snappy_manifold
|
128
129
|
|
129
130
|
def _add_O13_matrices_to_faces(self):
|
@@ -134,12 +135,10 @@ class IdealRaytracingData(RaytracingData):
|
|
134
135
|
|
135
136
|
def _add_complex_vertices(self):
|
136
137
|
for tet in self.mcomplex.Tetrahedra:
|
137
|
-
tet.complex_vertices =
|
138
|
-
v : vert
|
139
|
-
for v, vert in zip(
|
138
|
+
tet.complex_vertices = dict(zip(
|
140
139
|
t3m.ZeroSubsimplices,
|
141
140
|
symmetric_vertices_for_tetrahedron(
|
142
|
-
tet.ShapeParameters[t3m.E01]))
|
141
|
+
tet.ShapeParameters[t3m.E01])))
|
143
142
|
|
144
143
|
def _add_R13_vertices(self):
|
145
144
|
for tet in self.mcomplex.Tetrahedra:
|
@@ -147,19 +146,9 @@ class IdealRaytracingData(RaytracingData):
|
|
147
146
|
V: ideal_point_to_r13(z, self.RF)
|
148
147
|
for V, z in tet.complex_vertices.items() }
|
149
148
|
tet.R13_vertex_products = {
|
150
|
-
|
151
|
-
|
152
|
-
for
|
153
|
-
if v0 != v1 }
|
154
|
-
|
155
|
-
def _add_R13_planes_to_faces(self):
|
156
|
-
for tet in self.mcomplex.Tetrahedra:
|
157
|
-
planes = make_tet_planes(
|
158
|
-
[ tet.R13_vertices[v]
|
159
|
-
for v in t3m.ZeroSubsimplices])
|
160
|
-
tet.R13_planes = {
|
161
|
-
F : plane
|
162
|
-
for F, plane in zip(t3m.TwoSubsimplices, planes) }
|
149
|
+
e: r13_dot(tet.R13_vertices[simplex.Head[e]],
|
150
|
+
tet.R13_vertices[simplex.Tail[e]])
|
151
|
+
for e in simplex.OneSubsimplices }
|
163
152
|
|
164
153
|
def _compute_R13_horosphere_scale_for_vertex(self, tet, V0):
|
165
154
|
vertex = tet.Class[V0]
|
@@ -215,48 +204,75 @@ class IdealRaytracingData(RaytracingData):
|
|
215
204
|
|
216
205
|
tet.cosh_sqr_inradius = tmp.cosh() ** 2
|
217
206
|
|
218
|
-
def
|
207
|
+
def _add_to_standard_torus_matrix(self, cusp):
|
219
208
|
i = cusp.Index
|
220
209
|
|
221
210
|
if cusp.is_complete:
|
222
211
|
m_param, l_param = cusp.Translations
|
223
212
|
else:
|
224
|
-
m_param, l_param =
|
225
|
-
sum(
|
226
|
-
for
|
227
|
-
in zip(
|
228
|
-
for j in range(2)
|
213
|
+
m_param, l_param = (
|
214
|
+
sum(log_shape * expo
|
215
|
+
for log_shape, expo
|
216
|
+
in zip(self.log_shapes, self.peripheral_gluing_equations[2 * i + j]))
|
217
|
+
for j in range(2) )
|
229
218
|
|
230
219
|
a, c = m_param.real(), m_param.imag()
|
231
220
|
b, d = l_param.real(), l_param.imag()
|
232
221
|
|
233
222
|
det = a*d - b * c
|
234
|
-
cusp.
|
223
|
+
cusp.to_standard_torus_matrix = make_matrix([[d,-b], [-c, a]]) / det
|
235
224
|
|
236
225
|
if cusp.is_complete:
|
237
226
|
cusp.margulisTubeRadiusParam = 0.0
|
238
227
|
else:
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
228
|
+
area_ratio = self.areas[i] / abs(det)
|
229
|
+
|
230
|
+
# Imagine a cone above 0 in the upper half space model with slope s
|
231
|
+
# that is, it intersects the plane at Euclidean height 1 in a circle
|
232
|
+
# of Euclidean radius s.
|
233
|
+
#
|
234
|
+
# Let C be the boundary of the upper half space without infinity.
|
235
|
+
# Consider a small rectangle with lengths dtheta and dr in C using
|
236
|
+
# polar coordinates.
|
237
|
+
# The intersection of extrusion of this rectangle with the
|
238
|
+
# boundary of the cone is spanned by two tangent vectors with
|
239
|
+
# Euclidean lengths
|
240
|
+
#
|
241
|
+
# r * dtheta and sqrt(1 + 1/s^2) * dr.
|
242
|
+
#
|
243
|
+
# The corresponding hyperbolic lengths are
|
244
|
+
#
|
245
|
+
# r / (r/s) * dtheta and sqrt(1 + 1/s^2) / (r/s) * dr
|
246
|
+
#
|
247
|
+
# Thus, the area of the intersection is
|
248
|
+
#
|
249
|
+
# dA = s * sqrt(1 + s^2) * dtheta * dr/r
|
250
|
+
#
|
251
|
+
# If m and l are the log lifts of the the holonomies of the
|
252
|
+
# meridian and longitudes in C^*, then we get for the area
|
253
|
+
#
|
254
|
+
# A = s * sqrt(1 + s^2) * (m wedge l)
|
255
|
+
#
|
256
|
+
# Recall that s = sinh R where R is the hyperbolic radius of the
|
257
|
+
# tube. The tube parameter we need to compute the intersection with
|
258
|
+
# a geodesic (in the shader) is given by T = cosh(R)^2/2.
|
259
|
+
#
|
260
|
+
# Letting A_0 = A / (m wedge l), we have
|
261
|
+
# A_0 = sinh R * cosh R = 1/2 sinh(2 * R)
|
262
|
+
# R = 1/2 arcsinh(A_0)
|
263
|
+
# T = 1/4 (1 + sqrt(1 + 4 * A_0^2))
|
264
|
+
|
265
|
+
a = 1 + 4 * area_ratio ** 2
|
266
|
+
cusp.margulisTubeRadiusParam = (1 + a.sqrt()) / 4
|
267
|
+
|
268
|
+
def _add_to_standard_torus_matrices(self):
|
269
|
+
for cusp in self.mcomplex.Vertices:
|
270
|
+
self._add_to_standard_torus_matrix(cusp)
|
255
271
|
|
256
272
|
def get_uniform_bindings(self):
|
257
273
|
# _check_consistency(self.mcomplex)
|
258
274
|
|
259
|
-
d = super(
|
275
|
+
d = super().get_uniform_bindings()
|
260
276
|
|
261
277
|
orientations = [
|
262
278
|
+1 if tet.ShapeParameters[t3m.E01].imag() > 0 else -1
|
@@ -309,8 +325,8 @@ class IdealRaytracingData(RaytracingData):
|
|
309
325
|
for V in t3m.ZeroSubsimplices
|
310
326
|
]
|
311
327
|
|
312
|
-
|
313
|
-
tet.Class[V].
|
328
|
+
toStandardTorusMatrices = [
|
329
|
+
tet.Class[V].to_standard_torus_matrix
|
314
330
|
for tet in self.mcomplex.Tetrahedra
|
315
331
|
for V in t3m.ZeroSubsimplices ]
|
316
332
|
|
@@ -331,23 +347,24 @@ class IdealRaytracingData(RaytracingData):
|
|
331
347
|
d['cuspTranslations'] = ('mat2[]', cusp_translations)
|
332
348
|
d['logAdjustments'] = ('vec2[]', logAdjustments)
|
333
349
|
d['cuspTriangleVertexPositions'] = ('mat3x2[]', cuspTriangleVertexPositions)
|
334
|
-
d['
|
350
|
+
d['toStandardTorusMatrices'] = ('mat2[]', toStandardTorusMatrices)
|
335
351
|
d['insphereRadiusParams'] = ('float[]', insphereRadiusParams)
|
336
352
|
d['isNonGeometric'] = ('bool', isNonGeometric)
|
337
353
|
d['nonGeometricTexture'] = ('int', 0)
|
354
|
+
d['eyeTexture'] = ('int', 1)
|
338
355
|
|
339
356
|
return d
|
340
357
|
|
341
358
|
def get_compile_time_constants(self):
|
342
|
-
d = super(
|
359
|
+
d = super().get_compile_time_constants()
|
343
360
|
d[b'##finiteTrig##'] = 0
|
344
361
|
return d
|
345
362
|
|
346
363
|
def initial_view_state(self):
|
347
|
-
boost =
|
348
|
-
|
349
|
-
|
350
|
-
|
364
|
+
boost = make_matrix([[1.0,0.0,0.0,0.0],
|
365
|
+
[0.0,1.0,0.0,0.0],
|
366
|
+
[0.0,0.0,1.0,0.0],
|
367
|
+
[0.0,0.0,0.0,1.0]])
|
351
368
|
tet_num = 0
|
352
369
|
weight = 0.0
|
353
370
|
return (boost, tet_num, weight)
|
@@ -366,15 +383,28 @@ class IdealRaytracingData(RaytracingData):
|
|
366
383
|
0.0)),
|
367
384
|
_cusp_view_scale(tet, subsimplex, area))
|
368
385
|
|
369
|
-
|
370
386
|
class NonGeometricRaytracingData(McomplexEngine):
|
371
|
-
|
372
|
-
|
387
|
+
@staticmethod
|
388
|
+
def from_manifold(manifold):
|
389
|
+
mcomplex = t3m.Mcomplex(manifold)
|
390
|
+
r = NonGeometricRaytracingData(mcomplex, manifold)
|
391
|
+
z = manifold.tetrahedra_shapes('rect')[0]
|
392
|
+
r.RF = z.real().parent()
|
393
|
+
return r
|
394
|
+
|
395
|
+
def __init__(self, mcomplex, manifold):
|
396
|
+
super().__init__(mcomplex)
|
397
|
+
self.manifold = manifold
|
398
|
+
|
399
|
+
def is_valid(self):
|
400
|
+
return False
|
373
401
|
|
374
402
|
def get_compile_time_constants(self):
|
375
403
|
return {
|
376
404
|
b'##num_tets##' : len(self.mcomplex.Tetrahedra),
|
377
|
-
b'##num_cusps##' : len(self.mcomplex.Vertices)
|
405
|
+
b'##num_cusps##' : len(self.mcomplex.Vertices),
|
406
|
+
b'##num_edges##' : len(self.mcomplex.Edges),
|
407
|
+
b'##finiteTrig##' : 0,
|
378
408
|
}
|
379
409
|
|
380
410
|
def get_uniform_bindings(self):
|
@@ -385,24 +415,23 @@ class NonGeometricRaytracingData(McomplexEngine):
|
|
385
415
|
('int', 0)}
|
386
416
|
|
387
417
|
def initial_view_state(self):
|
388
|
-
boost =
|
389
|
-
|
390
|
-
|
391
|
-
|
418
|
+
boost = make_matrix([[1.0,0.0,0.0,0.0],
|
419
|
+
[0.0,1.0,0.0,0.0],
|
420
|
+
[0.0,0.0,1.0,0.0],
|
421
|
+
[0.0,0.0,0.0,1.0]])
|
392
422
|
tet_num = 0
|
393
423
|
weight = 0.0
|
394
424
|
return (boost, tet_num, weight)
|
395
425
|
|
396
426
|
def update_view_state(self, boost_tet_num_and_weight,
|
397
|
-
m=
|
398
|
-
|
399
|
-
|
400
|
-
|
427
|
+
m=make_matrix([[1.0, 0.0, 0.0, 0.0],
|
428
|
+
[0.0, 1.0, 0.0, 0.0],
|
429
|
+
[0.0, 0.0, 1.0, 0.0],
|
430
|
+
[0.0, 0.0, 0.0, 1.0]])):
|
401
431
|
boost, tet_num, weight = boost_tet_num_and_weight
|
402
432
|
boost = boost * m
|
403
433
|
return boost, tet_num, weight
|
404
434
|
|
405
|
-
|
406
435
|
def _pgl2_matrix_for_face(tet, F):
|
407
436
|
gluing = tet.Gluing[F]
|
408
437
|
other_tet = tet.Neighbor[F]
|
@@ -444,7 +473,7 @@ def _compute_cusp_triangle_vertex_positions(tet, V, i):
|
|
444
473
|
log_z0 = CF(0)
|
445
474
|
|
446
475
|
# Inverting matrix here since SageMath screws up :(
|
447
|
-
translations_to_ml =
|
476
|
+
translations_to_ml = make_matrix([[d,-b], [-c, a]]) / (a*d - b * c)
|
448
477
|
|
449
478
|
vertex_positions = [ translations_to_ml * complex_to_pair(z)
|
450
479
|
for z in vertex_positions ]
|
@@ -486,7 +515,7 @@ def _compute_margulis_tube_ends(tet, vertex):
|
|
486
515
|
if tet.Class[vertex].is_complete:
|
487
516
|
return [(0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0)]
|
488
517
|
|
489
|
-
return [ tet.cusp_to_tet_matrices[vertex] *
|
518
|
+
return [ tet.cusp_to_tet_matrices[vertex] * make_vector([1.0, x, 0.0, 0.0])
|
490
519
|
for x in [-1.0, 1.0] ]
|
491
520
|
|
492
521
|
|
@@ -515,10 +544,11 @@ def _cusp_view_matrix(tet, subsimplex, area):
|
|
515
544
|
factor_to_move_inside = 1.0001
|
516
545
|
rotation = l_translation / abs(l_translation)
|
517
546
|
scale = factor_to_move_inside/area.sqrt()
|
518
|
-
borel_transform =
|
519
|
-
|
547
|
+
borel_transform = make_matrix([[ scale*rotation, translation ],
|
548
|
+
[ 0, 1 ]],
|
549
|
+
ring=CF)
|
520
550
|
|
521
|
-
base_camera_matrix =
|
551
|
+
base_camera_matrix = make_matrix(
|
522
552
|
[[ 1, 0, 0, 0],
|
523
553
|
[ 0, 0, 0, 1],
|
524
554
|
[ 0, 1, 0, 0],
|
@@ -555,7 +585,7 @@ def _check_consistency(mcomplex):
|
|
555
585
|
for F in t3m.TwoSubsimplices:
|
556
586
|
for V in t3m.ZeroSubsimplices:
|
557
587
|
if V & F:
|
558
|
-
v0 = tet.O13_matrices[F] *
|
588
|
+
v0 = tet.O13_matrices[F] * make_vector(tet.R13_vertices[V])
|
559
589
|
v1 = tet.Neighbor[F].R13_vertices[tet.Gluing[F].image(V)]
|
560
590
|
err = r13_dot(v0, v1)
|
561
591
|
if err > 1e-10 or err < -1e-10:
|