snappy 3.1__cp39-cp39-win_amd64.whl → 3.2__cp39-cp39-win_amd64.whl
Sign up to get free protection for your applications and to get access to all the features.
- snappy/CyOpenGL.cp39-win_amd64.pyd +0 -0
- snappy/SnapPy.cp39-win_amd64.pyd +0 -0
- snappy/SnapPyHP.cp39-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 -70
- 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 -180
- 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 +116 -86
- snappy/twister/main.py +1 -7
- snappy/twister/twister_core.cp39-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.dist-info → snappy-3.2.dist-info}/METADATA +26 -11
- snappy-3.2.dist-info/RECORD +503 -0
- {snappy-3.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
- {snappy-3.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
- snappy/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/__pycache__/browser.cpython-39.pyc +0 -0
- snappy/__pycache__/cache.cpython-39.pyc +0 -0
- snappy/__pycache__/database.cpython-39.pyc +0 -0
- snappy/__pycache__/db_utilities.cpython-39.pyc +0 -0
- snappy/__pycache__/decorated_isosig.cpython-39.pyc +0 -0
- snappy/__pycache__/exceptions.cpython-39.pyc +0 -0
- snappy/__pycache__/export_stl.cpython-39.pyc +0 -0
- snappy/__pycache__/filedialog.cpython-39.pyc +0 -0
- snappy/__pycache__/gui.cpython-39.pyc +0 -0
- snappy/__pycache__/horoviewer.cpython-39.pyc +0 -0
- snappy/__pycache__/math_basics.cpython-39.pyc +0 -0
- snappy/__pycache__/matrix.cpython-39.pyc +0 -0
- snappy/__pycache__/number.cpython-39.pyc +0 -0
- snappy/__pycache__/numeric_output_checker.cpython-39.pyc +0 -0
- snappy/__pycache__/pari.cpython-39.pyc +0 -0
- snappy/__pycache__/polyviewer.cpython-39.pyc +0 -0
- snappy/__pycache__/sage_helper.cpython-39.pyc +0 -0
- snappy/__pycache__/version.cpython-39.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-39.pyc +0 -0
- snappy/drilling/__pycache__/constants.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/crush.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/cusps.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/debug.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/epsilons.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/exceptions.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/fixed_points.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_info.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_tube.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/geometric_structure.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/line.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/moves.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/peripheral_curves.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/perturb.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/quotient_space.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/spatial_dict.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/subdivide.cpython-39.pyc +0 -0
- snappy/drilling/__pycache__/tracing.cpython-39.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-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/exceptions.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/hyp_utils.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/link_projection.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/main.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/pl_utils.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/put_in_S3.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-39.pyc +0 -0
- snappy/exterior_to_link/__pycache__/stored_moves.cpython-39.pyc +0 -0
- snappy/hyperboloid/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/manifolds/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/component.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/coordinates.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/fieldExtensions.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/findLoops.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/homology.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/manifoldMethods.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/matrix.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/polynomial.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/processComponents.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileBase.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileDispatch.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/processMagmaFile.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/processRurFile.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVariety.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/rur.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-39.pyc +0 -0
- snappy/ptolemy/__pycache__/utilities.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/character_varieties.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/fundamental_polyhedron.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/interval_reps.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/kernel_structures.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/mcomplex_base.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/nsagetools.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/polished_reps.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/shapes.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/slice_obs_HKL.cpython-39.pyc +0 -0
- snappy/snap/__pycache__/utilities.cpython-39.pyc +0 -0
- snappy/snap/peripheral/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-39.pyc +0 -0
- snappy/snap/peripheral/__pycache__/link.cpython-39.pyc +0 -0
- snappy/snap/peripheral/__pycache__/peripheral.cpython-39.pyc +0 -0
- snappy/snap/peripheral/__pycache__/surface.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/arrow.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/corner.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/edge.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/face.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/files.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/homology.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/linalg.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/mcomplex.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/perm4.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/simplex.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/spun.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/surface.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-39.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/vertex.cpython-39.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-39.pyc +0 -0
- snappy/twister/__pycache__/main.cpython-39.pyc +0 -0
- snappy/upper_halfspace/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/upper_halfspace/__pycache__/ideal_point.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/cuspCrossSection.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/cuspTranslations.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/cusp_areas.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/cusp_shapes.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/exceptions.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/interval_tree.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/realAlgebra.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/shapes.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/short_slopes.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/squareExtensions.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/verifyCanonical.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/verifyHyperbolicity.cpython-39.pyc +0 -0
- snappy/verify/__pycache__/volume.cpython-39.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-39.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/closed.cpython-39.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-39.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/cusped.cpython-39.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-39.pyc +0 -0
- snappy/verify/cuspCrossSection.py +0 -1422
- snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-39.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-39.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/__init__.cpython-39.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-39.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-39.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-39.pyc +0 -0
- snappy-3.1.dist-info/RECORD +0 -575
- {snappy-3.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -3,23 +3,16 @@ from .ideal_raytracing_data import *
|
|
3
3
|
from .finite_raytracing_data import *
|
4
4
|
from .hyperboloid_navigation import *
|
5
5
|
from .geodesics import Geodesics
|
6
|
+
from .eyeball import Eyeball
|
7
|
+
from .eyeball import eyeball_type_none, eyeball_type_paper_plane
|
6
8
|
from . import shaders
|
7
9
|
|
8
|
-
from
|
10
|
+
from ..CyOpenGL import SimpleImageShaderWidget
|
9
11
|
|
10
|
-
from
|
12
|
+
from ..matrix import make_vector, make_matrix
|
11
13
|
|
12
14
|
import math
|
13
|
-
__all__ = ['RaytracingView'
|
14
|
-
|
15
|
-
|
16
|
-
class NonorientableUnsupportedError(RuntimeError):
|
17
|
-
def __init__(self, mfd):
|
18
|
-
RuntimeError.__init__(
|
19
|
-
self,
|
20
|
-
("Inside view for non-orientable manifolds such as %s is not "
|
21
|
-
"supported yet.") % mfd.name())
|
22
|
-
|
15
|
+
__all__ = ['RaytracingView']
|
23
16
|
|
24
17
|
_constant_uniform_bindings = {
|
25
18
|
'multiScreenShot' : ('int', 0),
|
@@ -79,6 +72,8 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
79
72
|
self, container,
|
80
73
|
*args, **kwargs)
|
81
74
|
|
75
|
+
self.set_textures(shaders.get_texture_paths())
|
76
|
+
|
82
77
|
self.trig_type = trig_type
|
83
78
|
|
84
79
|
# The view can be driven in two modes:
|
@@ -95,10 +90,9 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
95
90
|
has_weights = bool(weights or cohomology_class)
|
96
91
|
|
97
92
|
self.ui_uniform_dict = {
|
98
|
-
'maxSteps' : ['int', 99 if has_weights else
|
93
|
+
'maxSteps' : ['int', 99 if has_weights else 40],
|
99
94
|
'maxDist' : ['float', 6.5 if has_weights else 17.0],
|
100
95
|
'subpixelCount': ['int', 1],
|
101
|
-
'edgeThickness' : ['float', 0.0000001],
|
102
96
|
|
103
97
|
'contrast' : ['float', 0.1 if has_weights else 0.5],
|
104
98
|
'noGradient' : ['bool', False],
|
@@ -110,17 +104,22 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
110
104
|
'showElevation' : ['bool', False],
|
111
105
|
'desaturate_edges' : ['bool', False],
|
112
106
|
'viewScale' : ['float', 1.0],
|
113
|
-
'perspectiveType' : ['int', 0]
|
107
|
+
'perspectiveType' : ['int', 0],
|
108
|
+
'crosshairs' : ['bool', False]
|
114
109
|
}
|
115
110
|
|
116
111
|
self.ui_parameter_dict = {
|
117
|
-
'insphere_scale' : ['float', 0.0
|
112
|
+
'insphere_scale' : ['float', 0.0 ],
|
118
113
|
'cuspAreas' : ['float[]', manifold.num_cusps() * [ 0.0 if has_weights else 1.0 ]],
|
114
|
+
'edgeThickness' : ['float', 0.0],
|
119
115
|
'edgeTubeRadius' : ['float', 0.0 if has_weights else
|
120
|
-
(0.025 if trig_type == 'finite' else 0.
|
116
|
+
(0.025 if trig_type == 'finite' else 0.0)],
|
121
117
|
'vertexRadius' : ['float', 0.0 if has_weights else 0.25],
|
122
118
|
'geodesicTubeRadii' : ['float[]', []],
|
123
|
-
'geodesicTubeEnables' : ['bool[]', []]
|
119
|
+
'geodesicTubeEnables' : ['bool[]', []],
|
120
|
+
'eyeballSize' : ['float', 0.5],
|
121
|
+
'freezeEyeball' : ['bool', False],
|
122
|
+
'eyeballType' : ['int', eyeball_type_none if has_weights else eyeball_type_paper_plane]
|
124
123
|
}
|
125
124
|
|
126
125
|
if cohomology_class:
|
@@ -135,18 +134,17 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
135
134
|
"Expected cohomology_class when given cohomology_basis")
|
136
135
|
|
137
136
|
self.compile_time_constants = {}
|
137
|
+
self.compile_time_defs = {}
|
138
138
|
|
139
139
|
self.manifold = manifold
|
140
140
|
|
141
|
+
self.additional_structures = {}
|
142
|
+
|
141
143
|
self._unguarded_initialize_raytracing_data()
|
142
144
|
|
143
|
-
if self.trig_type == '
|
144
|
-
|
145
|
-
|
146
|
-
self.geodesics = None
|
147
|
-
self.geodesics_uniform_bindings = {}
|
148
|
-
else:
|
149
|
-
self.geodesics = Geodesics(manifold, geodesics)
|
145
|
+
if self.trig_type == 'ideal':
|
146
|
+
self.additional_structures['geodesics'] = (
|
147
|
+
Geodesics(manifold, geodesics))
|
150
148
|
self.resize_geodesic_params(enable=True)
|
151
149
|
self._update_geodesic_data()
|
152
150
|
|
@@ -175,7 +173,10 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
175
173
|
result = _merge_dicts(
|
176
174
|
_constant_uniform_bindings,
|
177
175
|
self.manifold_uniform_bindings,
|
178
|
-
|
176
|
+
_merge_dicts(
|
177
|
+
*(additional_structure.get_uniform_bindings()
|
178
|
+
for additional_structure
|
179
|
+
in self.additional_structures.values())),
|
179
180
|
{
|
180
181
|
'currentWeight' : ('float', current_weight),
|
181
182
|
'screenResolution' : ('vec2', [width, height]),
|
@@ -184,6 +185,8 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
184
185
|
'viewMode' : ('int', self.view),
|
185
186
|
'edgeTubeRadiusParam' :
|
186
187
|
('float', math.cosh(self.ui_parameter_dict['edgeTubeRadius'][1]) ** 2 / 2.0),
|
188
|
+
'edgeThicknessParam' :
|
189
|
+
('float', math.sinh(self.ui_parameter_dict['edgeThickness'][1]) ** 2),
|
187
190
|
'vertexSphereRadiusParam' :
|
188
191
|
('float', math.cosh(self.ui_parameter_dict['vertexRadius'][1]) ** 2)
|
189
192
|
},
|
@@ -195,15 +198,7 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
195
198
|
return result
|
196
199
|
|
197
200
|
def _initialize_raytracing_data(self):
|
198
|
-
|
199
|
-
'all tetrahedra positively oriented',
|
200
|
-
'contains negatively oriented tetrahedra' ]:
|
201
|
-
self._unguarded_initialize_raytracing_data()
|
202
|
-
else:
|
203
|
-
try:
|
204
|
-
self._unguarded_initialize_raytracing_data()
|
205
|
-
except Exception:
|
206
|
-
pass
|
201
|
+
self._unguarded_initialize_raytracing_data()
|
207
202
|
|
208
203
|
def _unguarded_initialize_raytracing_data(self):
|
209
204
|
weights = self.weights
|
@@ -225,14 +220,30 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
225
220
|
areas=self.ui_parameter_dict['cuspAreas'][1],
|
226
221
|
insphere_scale=self.ui_parameter_dict['insphere_scale'][1],
|
227
222
|
weights=weights)
|
223
|
+
if self.raytracing_data.is_valid():
|
224
|
+
self.additional_structures['eyeball'] = (
|
225
|
+
Eyeball(self))
|
226
|
+
else:
|
227
|
+
if 'eyeball' in self.additional_structures:
|
228
|
+
del self.additional_structures['eyeball']
|
228
229
|
|
229
230
|
self.manifold_uniform_bindings = (
|
230
231
|
self.raytracing_data.get_uniform_bindings())
|
231
232
|
|
233
|
+
def update_shader_and_redraw(self):
|
234
|
+
self._update_shader()
|
235
|
+
self.draw()
|
236
|
+
|
232
237
|
def recompute_raytracing_data_and_redraw(self):
|
233
238
|
self._initialize_raytracing_data()
|
234
239
|
self.fix_view_state()
|
235
|
-
self.
|
240
|
+
self.draw()
|
241
|
+
|
242
|
+
def recompute_raytracing_data_update_shader_and_redraw(self):
|
243
|
+
self._initialize_raytracing_data()
|
244
|
+
self._update_shader()
|
245
|
+
self.fix_view_state()
|
246
|
+
self.draw()
|
236
247
|
|
237
248
|
def compute_translation_and_inverse_from_pick_point(
|
238
249
|
self, size, frag_coord, depth):
|
@@ -263,7 +274,7 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
263
274
|
# Camera is assumed to be at origin.
|
264
275
|
dist = RF(depth).arctanh()
|
265
276
|
# Reimplemented from get_ray_eye_space
|
266
|
-
dir =
|
277
|
+
dir = make_vector([RF(scaled_x), RF(scaled_y), RF(-1)])
|
267
278
|
|
268
279
|
else:
|
269
280
|
if perspective_type == 1:
|
@@ -274,22 +285,22 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
274
285
|
# to determine the start point and direction of ray.
|
275
286
|
# Then compute end point using depth value.
|
276
287
|
r2 = 0.5 * (scaled_x * scaled_x + scaled_y * scaled_y)
|
277
|
-
ray_end =
|
288
|
+
ray_end = make_vector(
|
278
289
|
[RF((r2 + 1.0) + depth * r2),
|
279
290
|
RF( scaled_x + depth * scaled_x),
|
280
291
|
RF( scaled_y + depth * scaled_y),
|
281
292
|
RF( r2 + depth * (r2 - 1.0))])
|
282
293
|
else:
|
283
294
|
pt = R13_normalise(
|
284
|
-
|
285
|
-
ray_end =
|
295
|
+
make_vector([RF(1.0), RF(2.0 * x), RF(2.0 * y), RF(0.0)]))
|
296
|
+
ray_end = make_vector([pt[0],pt[1],pt[2],RF(-depth)])
|
286
297
|
|
287
298
|
ray_end = R13_normalise(ray_end)
|
288
299
|
|
289
300
|
# Distance of ray_end from origin
|
290
301
|
dist = ray_end[0].arccosh()
|
291
302
|
# Direction from origin to ray_end
|
292
|
-
dir =
|
303
|
+
dir = make_vector([ray_end[1], ray_end[2], ray_end[3]])
|
293
304
|
|
294
305
|
# Normalize direction
|
295
306
|
dir = dir.normalized()
|
@@ -316,7 +327,7 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
316
327
|
speed)
|
317
328
|
|
318
329
|
def resize_geodesic_params(self, enable=False):
|
319
|
-
num = (len(self.geodesics.geodesic_tube_infos) -
|
330
|
+
num = (len(self.additional_structures['geodesics'].geodesic_tube_infos) -
|
320
331
|
len(self.ui_parameter_dict['geodesicTubeRadii'][1]))
|
321
332
|
self.ui_parameter_dict['geodesicTubeRadii'][1] += num * [ 0.02 ]
|
322
333
|
self.ui_parameter_dict['geodesicTubeEnables'][1] += num * [ enable ]
|
@@ -325,18 +336,14 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
325
336
|
self.ui_parameter_dict['geodesicTubeEnables'][1][index] = True
|
326
337
|
|
327
338
|
def _update_geodesic_data(self):
|
328
|
-
|
339
|
+
return self.additional_structures['geodesics'].set_enables_and_radii_and_update(
|
329
340
|
self.ui_parameter_dict['geodesicTubeEnables'][1],
|
330
341
|
self.ui_parameter_dict['geodesicTubeRadii'][1])
|
331
|
-
self.geodesics_uniform_bindings = (
|
332
|
-
self.geodesics.get_uniform_bindings())
|
333
|
-
|
334
|
-
return success
|
335
342
|
|
336
343
|
def update_geodesic_data_and_redraw(self):
|
337
344
|
success = self._update_geodesic_data()
|
338
345
|
self._update_shader()
|
339
|
-
self.
|
346
|
+
self.draw()
|
340
347
|
return success
|
341
348
|
|
342
349
|
def disable_edges_for_geodesics(self):
|
@@ -355,32 +362,30 @@ class RaytracingView(SimpleImageShaderWidget, HyperboloidNavigation):
|
|
355
362
|
return True
|
356
363
|
|
357
364
|
def _update_shader(self):
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
geodesic_compile_time_constants = {
|
363
|
-
b'##num_geodesic_segments##' : 0
|
364
|
-
}
|
365
|
+
compile_time_defs = _merge_dicts(
|
366
|
+
*(additional_structure.get_compile_time_defs()
|
367
|
+
for additional_structure
|
368
|
+
in self.additional_structures.values()))
|
365
369
|
|
366
|
-
compile_time_constants =
|
367
|
-
self.raytracing_data.get_compile_time_constants()
|
368
|
-
geodesic_compile_time_constants)
|
370
|
+
compile_time_constants = (
|
371
|
+
self.raytracing_data.get_compile_time_constants())
|
369
372
|
|
370
|
-
if compile_time_constants == self.compile_time_constants
|
373
|
+
if (compile_time_constants == self.compile_time_constants and
|
374
|
+
compile_time_defs == self.compile_time_defs):
|
371
375
|
return
|
372
376
|
|
373
377
|
self.compile_time_constants = compile_time_constants
|
378
|
+
self.compile_time_defs = compile_time_defs
|
374
379
|
|
375
380
|
shader_source, uniform_block_names_sizes_and_offsets = (
|
376
381
|
shaders.get_triangulation_shader_source_and_ubo_descriptors(
|
377
|
-
compile_time_constants
|
382
|
+
compile_time_constants,
|
383
|
+
compile_time_defs))
|
378
384
|
|
379
385
|
self.set_fragment_shader_source(
|
380
386
|
shader_source,
|
381
387
|
uniform_block_names_sizes_and_offsets)
|
382
388
|
|
383
|
-
|
384
389
|
def _merge_dicts(*dicts):
|
385
390
|
return { k : v for d in dicts for k, v in d.items() }
|
386
391
|
|
@@ -398,10 +403,10 @@ def _check_matrices_equal(m1, m2):
|
|
398
403
|
|
399
404
|
|
400
405
|
def _check_matrix_o13(m):
|
401
|
-
s =
|
402
|
-
|
403
|
-
|
404
|
-
|
406
|
+
s = make_matrix([[-1, 0,0,0],
|
407
|
+
[0, 1, 0, 0],
|
408
|
+
[0, 0, 1, 0],
|
409
|
+
[0, 0, 0, 1]])
|
405
410
|
|
406
411
|
_check_matrices_equal(s, m * s * m.transpose())
|
407
412
|
|
Binary file
|
Binary file
|
@@ -2,6 +2,10 @@ import os
|
|
2
2
|
|
3
3
|
from . import __path__ as _base_path
|
4
4
|
|
5
|
+
def get_texture_paths():
|
6
|
+
return [ os.path.join(_base_path[0], name)
|
7
|
+
for name in ['NonGeometric.png',
|
8
|
+
'Eye.png'] ]
|
5
9
|
|
6
10
|
def _replace_compile_time_constants(shader_source, constants_dict):
|
7
11
|
for name, value in constants_dict.items():
|
@@ -13,7 +17,9 @@ def _replace_compile_time_constants(shader_source, constants_dict):
|
|
13
17
|
_triangulation_shader_source = None
|
14
18
|
|
15
19
|
|
16
|
-
def get_triangulation_shader_source_and_ubo_descriptors(
|
20
|
+
def get_triangulation_shader_source_and_ubo_descriptors(
|
21
|
+
constants_dict,
|
22
|
+
defs_dict = {}):
|
17
23
|
|
18
24
|
global _triangulation_shader_source
|
19
25
|
|
@@ -25,8 +31,23 @@ def get_triangulation_shader_source_and_ubo_descriptors(constants_dict):
|
|
25
31
|
_triangulation_shader_source,
|
26
32
|
constants_dict)
|
27
33
|
|
34
|
+
if defs_dict:
|
35
|
+
header, footer = src.split(b'\n', 1)
|
36
|
+
def_block = (
|
37
|
+
'\n\n'
|
38
|
+
'// { Compile time defines\n')
|
39
|
+
for k, v in sorted(defs_dict.items()):
|
40
|
+
def_block += '#define %s' % k
|
41
|
+
if not v is None:
|
42
|
+
def_block += ' %r' % v
|
43
|
+
def_block += '\n'
|
44
|
+
def_block += '// } Compile time defines\n\n'
|
45
|
+
src = header + def_block.encode() + footer
|
46
|
+
|
47
|
+
num_geodesic_segments = defs_dict.get('num_geodesic_segments', 0)
|
48
|
+
num_additional_horospheres = defs_dict.get('num_additional_horospheres', 0)
|
49
|
+
num_eyeballs = defs_dict.get('num_eyeballs', 0)
|
28
50
|
num_tets = constants_dict[b'##num_tets##']
|
29
|
-
num_geodesic_segments = constants_dict[b'##num_geodesic_segments##']
|
30
51
|
|
31
52
|
uniform_block_names_sizes_and_offsets = [
|
32
53
|
('TetrahedraCombinatorics',
|
@@ -60,6 +81,21 @@ def get_triangulation_shader_source_and_ubo_descriptors(constants_dict):
|
|
60
81
|
'geodesicHeads': 16 * num_geodesic_segments,
|
61
82
|
'geodesicIndex': (16 + 16) * num_geodesic_segments,
|
62
83
|
'geodesicTubeRadiusParam': (16 + 16 + 16) * num_geodesic_segments,
|
63
|
-
'geodesicOffsets': (16 + 16 + 16 + 16) * num_geodesic_segments })
|
84
|
+
'geodesicOffsets': (16 + 16 + 16 + 16) * num_geodesic_segments }),
|
85
|
+
('eyeballs',
|
86
|
+
(16 + 64 + 64) * num_eyeballs + 16 * (num_tets + 1),
|
87
|
+
{ 'eyeballPositions' : 0,
|
88
|
+
'eyeballInvEmbeddings' : 16 * num_eyeballs,
|
89
|
+
'eyeballEmbeddings' : (16 + 64) * num_eyeballs,
|
90
|
+
'eyeballOffsets' : (16 + 64 + 64) * num_eyeballs }),
|
91
|
+
('additionalHorospheres',
|
92
|
+
(16 + 16) * num_additional_horospheres + 16 * (num_tets + 1),
|
93
|
+
{ 'horosphereVec': 0,
|
94
|
+
'horosphereCuspIndex': 16 * num_additional_horospheres,
|
95
|
+
'horosphereOffsets' : (16 + 16) * num_additional_horospheres}),
|
96
|
+
('edgeMidpoints',
|
97
|
+
16 * 6 * num_tets,
|
98
|
+
{ 'edgeMidpointVec': 0 })
|
99
|
+
]
|
64
100
|
|
65
101
|
return src, uniform_block_names_sizes_and_offsets
|