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.
Files changed (476) hide show
  1. snappy/CyOpenGL.cp38-win_amd64.pyd +0 -0
  2. snappy/SnapPy.cp38-win_amd64.pyd +0 -0
  3. snappy/SnapPyHP.cp38-win_amd64.pyd +0 -0
  4. snappy/__init__.py +299 -402
  5. snappy/app.py +70 -20
  6. snappy/browser.py +18 -17
  7. snappy/canonical.py +249 -0
  8. snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
  9. snappy/cusps/cusp_area_matrix.py +101 -0
  10. snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
  11. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  12. snappy/cusps/test.py +21 -0
  13. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  14. snappy/database.py +10 -9
  15. snappy/decorated_isosig.py +337 -114
  16. snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
  17. snappy/dev/extended_ptolemy/extended.py +3 -3
  18. snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
  19. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
  20. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  21. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  22. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  23. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  24. snappy/doc/_sources/additional_classes.rst.txt +40 -40
  25. snappy/doc/_sources/bugs.rst.txt +14 -14
  26. snappy/doc/_sources/censuses.rst.txt +51 -51
  27. snappy/doc/_sources/credits.rst.txt +75 -75
  28. snappy/doc/_sources/development.rst.txt +259 -239
  29. snappy/doc/_sources/index.rst.txt +182 -115
  30. snappy/doc/_sources/installing.rst.txt +247 -264
  31. snappy/doc/_sources/manifold.rst.txt +6 -6
  32. snappy/doc/_sources/manifoldhp.rst.txt +46 -46
  33. snappy/doc/_sources/news.rst.txt +355 -283
  34. snappy/doc/_sources/other.rst.txt +25 -25
  35. snappy/doc/_sources/platonic_census.rst.txt +20 -20
  36. snappy/doc/_sources/plink.rst.txt +102 -102
  37. snappy/doc/_sources/ptolemy.rst.txt +66 -66
  38. snappy/doc/_sources/ptolemy_classes.rst.txt +42 -42
  39. snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -297
  40. snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -363
  41. snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -301
  42. snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -61
  43. snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -105
  44. snappy/doc/_sources/screenshots.rst.txt +21 -21
  45. snappy/doc/_sources/snap.rst.txt +87 -87
  46. snappy/doc/_sources/snappy.rst.txt +28 -28
  47. snappy/doc/_sources/spherogram.rst.txt +103 -103
  48. snappy/doc/_sources/todo.rst.txt +47 -47
  49. snappy/doc/_sources/triangulation.rst.txt +11 -11
  50. snappy/doc/_sources/tutorial.rst.txt +49 -49
  51. snappy/doc/_sources/verify.rst.txt +210 -150
  52. snappy/doc/_sources/verify_internals.rst.txt +79 -90
  53. snappy/doc/_static/basic.css +924 -902
  54. snappy/doc/_static/css/badge_only.css +1 -1
  55. snappy/doc/_static/css/theme.css +1 -1
  56. snappy/doc/_static/doctools.js +1 -1
  57. snappy/doc/_static/documentation_options.js +12 -13
  58. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  59. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  60. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  61. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  62. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  63. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  64. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  65. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  66. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  67. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  68. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  69. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  70. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  71. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  72. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  73. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  74. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  75. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  76. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  77. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  78. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  79. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  80. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  81. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  82. snappy/doc/_static/js/versions.js +228 -0
  83. snappy/doc/_static/language_data.js +199 -199
  84. snappy/doc/_static/pygments.css +74 -73
  85. snappy/doc/_static/searchtools.js +125 -71
  86. snappy/doc/_static/snappy_furo.css +33 -33
  87. snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -42
  88. snappy/doc/_static/sphinx_highlight.js +13 -3
  89. snappy/doc/additional_classes.html +1499 -1330
  90. snappy/doc/bugs.html +131 -134
  91. snappy/doc/censuses.html +426 -445
  92. snappy/doc/credits.html +180 -183
  93. snappy/doc/development.html +383 -363
  94. snappy/doc/genindex.html +1330 -1409
  95. snappy/doc/index.html +261 -206
  96. snappy/doc/installing.html +345 -363
  97. snappy/doc/manifold.html +3451 -2839
  98. snappy/doc/manifoldhp.html +179 -182
  99. snappy/doc/news.html +387 -329
  100. snappy/doc/objects.inv +0 -0
  101. snappy/doc/other.html +160 -162
  102. snappy/doc/platonic_census.html +374 -377
  103. snappy/doc/plink.html +209 -212
  104. snappy/doc/ptolemy.html +253 -255
  105. snappy/doc/ptolemy_classes.html +1143 -1146
  106. snappy/doc/ptolemy_examples1.html +408 -410
  107. snappy/doc/ptolemy_examples2.html +470 -473
  108. snappy/doc/ptolemy_examples3.html +413 -416
  109. snappy/doc/ptolemy_examples4.html +194 -197
  110. snappy/doc/ptolemy_prelim.html +247 -250
  111. snappy/doc/py-modindex.html +164 -167
  112. snappy/doc/screenshots.html +140 -142
  113. snappy/doc/search.html +134 -137
  114. snappy/doc/searchindex.js +1 -1
  115. snappy/doc/snap.html +201 -204
  116. snappy/doc/snappy.html +180 -182
  117. snappy/doc/spherogram.html +1210 -1213
  118. snappy/doc/todo.html +165 -168
  119. snappy/doc/triangulation.html +1583 -1474
  120. snappy/doc/tutorial.html +158 -161
  121. snappy/doc/verify.html +329 -275
  122. snappy/doc/verify_internals.html +1234 -1691
  123. snappy/drilling/__init__.py +153 -235
  124. snappy/drilling/barycentric.py +103 -0
  125. snappy/drilling/constants.py +0 -2
  126. snappy/drilling/crush.py +56 -130
  127. snappy/drilling/cusps.py +12 -6
  128. snappy/drilling/debug.py +2 -1
  129. snappy/drilling/exceptions.py +7 -40
  130. snappy/drilling/moves.py +302 -243
  131. snappy/drilling/perturb.py +63 -37
  132. snappy/drilling/shorten.py +36 -0
  133. snappy/drilling/subdivide.py +0 -5
  134. snappy/drilling/test.py +23 -0
  135. snappy/drilling/test_cases.py +126 -0
  136. snappy/drilling/tracing.py +9 -37
  137. snappy/exceptions.py +18 -5
  138. snappy/exterior_to_link/barycentric_geometry.py +2 -4
  139. snappy/exterior_to_link/main.py +8 -7
  140. snappy/exterior_to_link/mcomplex_with_link.py +2 -2
  141. snappy/exterior_to_link/rational_linear_algebra.py +1 -1
  142. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
  143. snappy/exterior_to_link/test.py +21 -33
  144. snappy/geometric_structure/__init__.py +212 -0
  145. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  146. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  147. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  148. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  149. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  150. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  151. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  152. snappy/geometric_structure/geodesic/__init__.py +0 -0
  153. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  154. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  155. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  156. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  157. snappy/geometric_structure/geodesic/constants.py +6 -0
  158. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  159. snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
  160. snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
  161. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  162. snappy/geometric_structure/geodesic/line.py +30 -0
  163. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  164. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  165. snappy/geometric_structure/test.py +22 -0
  166. snappy/gui.py +23 -13
  167. snappy/horoviewer.py +7 -7
  168. snappy/hyperboloid/__init__.py +96 -31
  169. snappy/hyperboloid/distances.py +245 -0
  170. snappy/hyperboloid/horoball.py +19 -0
  171. snappy/hyperboloid/line.py +35 -0
  172. snappy/hyperboloid/point.py +9 -0
  173. snappy/hyperboloid/triangle.py +29 -0
  174. snappy/isometry_signature.py +382 -0
  175. snappy/len_spec/__init__.py +596 -0
  176. snappy/len_spec/geodesic_info.py +110 -0
  177. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  178. snappy/len_spec/geodesic_piece.py +143 -0
  179. snappy/len_spec/geometric_structure.py +182 -0
  180. snappy/len_spec/geometry.py +80 -0
  181. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  182. snappy/len_spec/spine.py +206 -0
  183. snappy/len_spec/test.py +24 -0
  184. snappy/len_spec/test_cases.py +69 -0
  185. snappy/len_spec/tile.py +275 -0
  186. snappy/len_spec/word.py +86 -0
  187. snappy/math_basics.py +39 -13
  188. snappy/matrix.py +52 -9
  189. snappy/number.py +12 -6
  190. snappy/numeric_output_checker.py +2 -3
  191. snappy/pari.py +8 -4
  192. snappy/phone_home.py +2 -1
  193. snappy/polyviewer.py +8 -8
  194. snappy/ptolemy/__init__.py +1 -1
  195. snappy/ptolemy/component.py +2 -2
  196. snappy/ptolemy/coordinates.py +25 -25
  197. snappy/ptolemy/findLoops.py +9 -9
  198. snappy/ptolemy/manifoldMethods.py +27 -29
  199. snappy/ptolemy/polynomial.py +50 -57
  200. snappy/ptolemy/processFileBase.py +60 -0
  201. snappy/ptolemy/ptolemyVariety.py +109 -41
  202. snappy/ptolemy/reginaWrapper.py +4 -4
  203. snappy/ptolemy/rur.py +1 -1
  204. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
  205. snappy/ptolemy/test.py +99 -54
  206. snappy/ptolemy/utilities.py +1 -1
  207. snappy/raytracing/__init__.py +64 -0
  208. snappy/raytracing/additional_horospheres.py +64 -0
  209. snappy/raytracing/additional_len_spec_choices.py +63 -0
  210. snappy/raytracing/cohomology_fractal.py +0 -3
  211. snappy/raytracing/eyeball.py +123 -0
  212. snappy/raytracing/finite_raytracing_data.py +17 -17
  213. snappy/raytracing/finite_viewer.py +15 -15
  214. snappy/raytracing/geodesic_tube_info.py +93 -63
  215. snappy/raytracing/geodesics.py +94 -64
  216. snappy/raytracing/geodesics_window.py +56 -34
  217. snappy/raytracing/gui_utilities.py +21 -6
  218. snappy/raytracing/hyperboloid_navigation.py +29 -4
  219. snappy/raytracing/hyperboloid_utilities.py +73 -73
  220. snappy/raytracing/ideal_raytracing_data.py +121 -91
  221. snappy/raytracing/inside_viewer.py +199 -66
  222. snappy/raytracing/pack.py +22 -0
  223. snappy/raytracing/raytracing_data.py +37 -25
  224. snappy/raytracing/raytracing_view.py +70 -65
  225. snappy/raytracing/shaders/Eye.png +0 -0
  226. snappy/raytracing/shaders/NonGeometric.png +0 -0
  227. snappy/raytracing/shaders/__init__.py +39 -3
  228. snappy/raytracing/shaders/fragment.glsl +451 -133
  229. snappy/raytracing/test.py +29 -0
  230. snappy/raytracing/tooltip.py +146 -0
  231. snappy/raytracing/upper_halfspace_utilities.py +42 -9
  232. snappy/sage_helper.py +67 -134
  233. snappy/settings.py +90 -77
  234. snappy/shell.py +2 -0
  235. snappy/snap/character_varieties.py +2 -2
  236. snappy/snap/find_field.py +4 -3
  237. snappy/snap/fundamental_polyhedron.py +2 -2
  238. snappy/snap/kernel_structures.py +5 -1
  239. snappy/snap/nsagetools.py +9 -8
  240. snappy/snap/peripheral/dual_cellulation.py +4 -3
  241. snappy/snap/peripheral/peripheral.py +2 -2
  242. snappy/snap/peripheral/surface.py +5 -5
  243. snappy/snap/peripheral/test.py +1 -1
  244. snappy/snap/polished_reps.py +8 -8
  245. snappy/snap/slice_obs_HKL.py +16 -14
  246. snappy/snap/t3mlite/arrow.py +3 -3
  247. snappy/snap/t3mlite/edge.py +3 -3
  248. snappy/snap/t3mlite/homology.py +2 -2
  249. snappy/snap/t3mlite/mcomplex.py +3 -3
  250. snappy/snap/t3mlite/simplex.py +12 -0
  251. snappy/snap/t3mlite/spun.py +18 -17
  252. snappy/snap/t3mlite/test_vs_regina.py +4 -4
  253. snappy/snap/test.py +37 -53
  254. snappy/snap/utilities.py +4 -5
  255. snappy/test.py +121 -138
  256. snappy/test_cases.py +263 -0
  257. snappy/testing.py +131 -0
  258. snappy/tiling/__init__.py +2 -0
  259. snappy/tiling/canonical_key_dict.py +59 -0
  260. snappy/tiling/dict_based_set.py +79 -0
  261. snappy/tiling/floor.py +49 -0
  262. snappy/tiling/hyperboloid_dict.py +54 -0
  263. snappy/tiling/iter_utils.py +78 -0
  264. snappy/tiling/lifted_tetrahedron.py +22 -0
  265. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  266. snappy/tiling/real_hash_dict.py +164 -0
  267. snappy/tiling/test.py +23 -0
  268. snappy/tiling/tile.py +215 -0
  269. snappy/tiling/triangle.py +33 -0
  270. snappy/tkterminal.py +113 -84
  271. snappy/twister/main.py +1 -7
  272. snappy/twister/twister_core.cp38-win_amd64.pyd +0 -0
  273. snappy/upper_halfspace/__init__.py +78 -17
  274. snappy/verify/__init__.py +3 -7
  275. snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
  276. snappy/verify/complex_volume/adjust_torsion.py +1 -2
  277. snappy/verify/complex_volume/closed.py +13 -13
  278. snappy/verify/complex_volume/cusped.py +6 -6
  279. snappy/verify/complex_volume/extended_bloch.py +5 -8
  280. snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
  281. snappy/verify/edge_equations.py +80 -0
  282. snappy/verify/exceptions.py +0 -55
  283. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
  284. snappy/verify/interval_newton_shapes_engine.py +7 -5
  285. snappy/verify/interval_tree.py +5 -5
  286. snappy/verify/krawczyk_shapes_engine.py +17 -18
  287. snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
  288. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
  289. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
  290. snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
  291. snappy/verify/shapes.py +5 -3
  292. snappy/verify/short_slopes.py +39 -41
  293. snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
  294. snappy/verify/test.py +57 -60
  295. snappy/verify/upper_halfspace/extended_matrix.py +1 -1
  296. snappy/verify/upper_halfspace/finite_point.py +3 -4
  297. snappy/verify/upper_halfspace/ideal_point.py +9 -9
  298. snappy/verify/volume.py +2 -2
  299. snappy/version.py +2 -2
  300. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +14 -10
  301. snappy-3.2.dist-info/RECORD +503 -0
  302. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  303. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
  304. snappy/__pycache__/__init__.cpython-38.pyc +0 -0
  305. snappy/__pycache__/browser.cpython-38.pyc +0 -0
  306. snappy/__pycache__/cache.cpython-38.pyc +0 -0
  307. snappy/__pycache__/database.cpython-38.pyc +0 -0
  308. snappy/__pycache__/db_utilities.cpython-38.pyc +0 -0
  309. snappy/__pycache__/decorated_isosig.cpython-38.pyc +0 -0
  310. snappy/__pycache__/exceptions.cpython-38.pyc +0 -0
  311. snappy/__pycache__/export_stl.cpython-38.pyc +0 -0
  312. snappy/__pycache__/filedialog.cpython-38.pyc +0 -0
  313. snappy/__pycache__/gui.cpython-38.pyc +0 -0
  314. snappy/__pycache__/horoviewer.cpython-38.pyc +0 -0
  315. snappy/__pycache__/math_basics.cpython-38.pyc +0 -0
  316. snappy/__pycache__/matrix.cpython-38.pyc +0 -0
  317. snappy/__pycache__/number.cpython-38.pyc +0 -0
  318. snappy/__pycache__/numeric_output_checker.cpython-38.pyc +0 -0
  319. snappy/__pycache__/pari.cpython-38.pyc +0 -0
  320. snappy/__pycache__/polyviewer.cpython-38.pyc +0 -0
  321. snappy/__pycache__/sage_helper.cpython-38.pyc +0 -0
  322. snappy/__pycache__/version.cpython-38.pyc +0 -0
  323. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  324. snappy/doc/_static/jquery-3.6.0.js +0 -10881
  325. snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
  326. snappy/doc/_static/js/html5shiv.min.js +0 -4
  327. snappy/doc/_static/underscore-1.13.1.js +0 -2042
  328. snappy/doc/_static/underscore.js +0 -6
  329. snappy/doc/verify_canon.html +0 -304
  330. snappy/drilling/__pycache__/__init__.cpython-38.pyc +0 -0
  331. snappy/drilling/__pycache__/constants.cpython-38.pyc +0 -0
  332. snappy/drilling/__pycache__/crush.cpython-38.pyc +0 -0
  333. snappy/drilling/__pycache__/cusps.cpython-38.pyc +0 -0
  334. snappy/drilling/__pycache__/debug.cpython-38.pyc +0 -0
  335. snappy/drilling/__pycache__/epsilons.cpython-38.pyc +0 -0
  336. snappy/drilling/__pycache__/exceptions.cpython-38.pyc +0 -0
  337. snappy/drilling/__pycache__/fixed_points.cpython-38.pyc +0 -0
  338. snappy/drilling/__pycache__/geodesic_info.cpython-38.pyc +0 -0
  339. snappy/drilling/__pycache__/geodesic_tube.cpython-38.pyc +0 -0
  340. snappy/drilling/__pycache__/geometric_structure.cpython-38.pyc +0 -0
  341. snappy/drilling/__pycache__/line.cpython-38.pyc +0 -0
  342. snappy/drilling/__pycache__/moves.cpython-38.pyc +0 -0
  343. snappy/drilling/__pycache__/peripheral_curves.cpython-38.pyc +0 -0
  344. snappy/drilling/__pycache__/perturb.cpython-38.pyc +0 -0
  345. snappy/drilling/__pycache__/quotient_space.cpython-38.pyc +0 -0
  346. snappy/drilling/__pycache__/spatial_dict.cpython-38.pyc +0 -0
  347. snappy/drilling/__pycache__/subdivide.cpython-38.pyc +0 -0
  348. snappy/drilling/__pycache__/tracing.cpython-38.pyc +0 -0
  349. snappy/drilling/geodesic_tube.py +0 -441
  350. snappy/drilling/geometric_structure.py +0 -366
  351. snappy/drilling/line.py +0 -122
  352. snappy/drilling/quotient_space.py +0 -94
  353. snappy/drilling/spatial_dict.py +0 -128
  354. snappy/exterior_to_link/__pycache__/__init__.cpython-38.pyc +0 -0
  355. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-38.pyc +0 -0
  356. snappy/exterior_to_link/__pycache__/exceptions.cpython-38.pyc +0 -0
  357. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-38.pyc +0 -0
  358. snappy/exterior_to_link/__pycache__/link_projection.cpython-38.pyc +0 -0
  359. snappy/exterior_to_link/__pycache__/main.cpython-38.pyc +0 -0
  360. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-38.pyc +0 -0
  361. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-38.pyc +0 -0
  362. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-38.pyc +0 -0
  363. snappy/exterior_to_link/__pycache__/pl_utils.cpython-38.pyc +0 -0
  364. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-38.pyc +0 -0
  365. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-38.pyc +0 -0
  366. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-38.pyc +0 -0
  367. snappy/exterior_to_link/__pycache__/stored_moves.cpython-38.pyc +0 -0
  368. snappy/hyperboloid/__pycache__/__init__.cpython-38.pyc +0 -0
  369. snappy/manifolds/__pycache__/__init__.cpython-38.pyc +0 -0
  370. snappy/ptolemy/__pycache__/__init__.cpython-38.pyc +0 -0
  371. snappy/ptolemy/__pycache__/component.cpython-38.pyc +0 -0
  372. snappy/ptolemy/__pycache__/coordinates.cpython-38.pyc +0 -0
  373. snappy/ptolemy/__pycache__/fieldExtensions.cpython-38.pyc +0 -0
  374. snappy/ptolemy/__pycache__/findLoops.cpython-38.pyc +0 -0
  375. snappy/ptolemy/__pycache__/homology.cpython-38.pyc +0 -0
  376. snappy/ptolemy/__pycache__/manifoldMethods.cpython-38.pyc +0 -0
  377. snappy/ptolemy/__pycache__/matrix.cpython-38.pyc +0 -0
  378. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-38.pyc +0 -0
  379. snappy/ptolemy/__pycache__/polynomial.cpython-38.pyc +0 -0
  380. snappy/ptolemy/__pycache__/processComponents.cpython-38.pyc +0 -0
  381. snappy/ptolemy/__pycache__/processFileBase.cpython-38.pyc +0 -0
  382. snappy/ptolemy/__pycache__/processFileDispatch.cpython-38.pyc +0 -0
  383. snappy/ptolemy/__pycache__/processMagmaFile.cpython-38.pyc +0 -0
  384. snappy/ptolemy/__pycache__/processRurFile.cpython-38.pyc +0 -0
  385. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-38.pyc +0 -0
  386. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-38.pyc +0 -0
  387. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-38.pyc +0 -0
  388. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
  389. snappy/ptolemy/__pycache__/rur.cpython-38.pyc +0 -0
  390. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
  391. snappy/ptolemy/__pycache__/utilities.cpython-38.pyc +0 -0
  392. snappy/snap/__pycache__/__init__.cpython-38.pyc +0 -0
  393. snappy/snap/__pycache__/character_varieties.cpython-38.pyc +0 -0
  394. snappy/snap/__pycache__/fundamental_polyhedron.cpython-38.pyc +0 -0
  395. snappy/snap/__pycache__/interval_reps.cpython-38.pyc +0 -0
  396. snappy/snap/__pycache__/kernel_structures.cpython-38.pyc +0 -0
  397. snappy/snap/__pycache__/mcomplex_base.cpython-38.pyc +0 -0
  398. snappy/snap/__pycache__/nsagetools.cpython-38.pyc +0 -0
  399. snappy/snap/__pycache__/polished_reps.cpython-38.pyc +0 -0
  400. snappy/snap/__pycache__/shapes.cpython-38.pyc +0 -0
  401. snappy/snap/__pycache__/slice_obs_HKL.cpython-38.pyc +0 -0
  402. snappy/snap/__pycache__/utilities.cpython-38.pyc +0 -0
  403. snappy/snap/peripheral/__pycache__/__init__.cpython-38.pyc +0 -0
  404. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-38.pyc +0 -0
  405. snappy/snap/peripheral/__pycache__/link.cpython-38.pyc +0 -0
  406. snappy/snap/peripheral/__pycache__/peripheral.cpython-38.pyc +0 -0
  407. snappy/snap/peripheral/__pycache__/surface.cpython-38.pyc +0 -0
  408. snappy/snap/t3mlite/__pycache__/__init__.cpython-38.pyc +0 -0
  409. snappy/snap/t3mlite/__pycache__/arrow.cpython-38.pyc +0 -0
  410. snappy/snap/t3mlite/__pycache__/corner.cpython-38.pyc +0 -0
  411. snappy/snap/t3mlite/__pycache__/edge.cpython-38.pyc +0 -0
  412. snappy/snap/t3mlite/__pycache__/face.cpython-38.pyc +0 -0
  413. snappy/snap/t3mlite/__pycache__/files.cpython-38.pyc +0 -0
  414. snappy/snap/t3mlite/__pycache__/homology.cpython-38.pyc +0 -0
  415. snappy/snap/t3mlite/__pycache__/linalg.cpython-38.pyc +0 -0
  416. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-38.pyc +0 -0
  417. snappy/snap/t3mlite/__pycache__/perm4.cpython-38.pyc +0 -0
  418. snappy/snap/t3mlite/__pycache__/simplex.cpython-38.pyc +0 -0
  419. snappy/snap/t3mlite/__pycache__/spun.cpython-38.pyc +0 -0
  420. snappy/snap/t3mlite/__pycache__/surface.cpython-38.pyc +0 -0
  421. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-38.pyc +0 -0
  422. snappy/snap/t3mlite/__pycache__/vertex.cpython-38.pyc +0 -0
  423. snappy/togl/__init__.py +0 -3
  424. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  425. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  426. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  427. snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
  428. snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
  429. snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
  430. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  431. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  432. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  433. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  434. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  435. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  436. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  437. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  438. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  439. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  440. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  441. snappy/twister/__pycache__/__init__.cpython-38.pyc +0 -0
  442. snappy/twister/__pycache__/main.cpython-38.pyc +0 -0
  443. snappy/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
  444. snappy/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
  445. snappy/verify/__pycache__/__init__.cpython-38.pyc +0 -0
  446. snappy/verify/__pycache__/cuspCrossSection.cpython-38.pyc +0 -0
  447. snappy/verify/__pycache__/cuspTranslations.cpython-38.pyc +0 -0
  448. snappy/verify/__pycache__/cusp_areas.cpython-38.pyc +0 -0
  449. snappy/verify/__pycache__/cusp_shapes.cpython-38.pyc +0 -0
  450. snappy/verify/__pycache__/exceptions.cpython-38.pyc +0 -0
  451. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-38.pyc +0 -0
  452. snappy/verify/__pycache__/interval_tree.cpython-38.pyc +0 -0
  453. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-38.pyc +0 -0
  454. snappy/verify/__pycache__/realAlgebra.cpython-38.pyc +0 -0
  455. snappy/verify/__pycache__/shapes.cpython-38.pyc +0 -0
  456. snappy/verify/__pycache__/short_slopes.cpython-38.pyc +0 -0
  457. snappy/verify/__pycache__/squareExtensions.cpython-38.pyc +0 -0
  458. snappy/verify/__pycache__/verifyCanonical.cpython-38.pyc +0 -0
  459. snappy/verify/__pycache__/verifyHyperbolicity.cpython-38.pyc +0 -0
  460. snappy/verify/__pycache__/volume.cpython-38.pyc +0 -0
  461. snappy/verify/complex_volume/__pycache__/__init__.cpython-38.pyc +0 -0
  462. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-38.pyc +0 -0
  463. snappy/verify/complex_volume/__pycache__/closed.cpython-38.pyc +0 -0
  464. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-38.pyc +0 -0
  465. snappy/verify/complex_volume/__pycache__/cusped.cpython-38.pyc +0 -0
  466. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-38.pyc +0 -0
  467. snappy/verify/cuspCrossSection.py +0 -1422
  468. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-38.pyc +0 -0
  469. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-38.pyc +0 -0
  470. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-38.pyc +0 -0
  471. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
  472. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-38.pyc +0 -0
  473. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-38.pyc +0 -0
  474. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
  475. snappy-3.1.1.dist-info/RECORD +0 -575
  476. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -1,12 +1,12 @@
1
- from snappy.snap import t3mlite as t3m
2
- from snappy import Triangulation
1
+ from ..snap import t3mlite as t3m
2
+ from ..snap.t3mlite import simplex
3
+ from .. import Triangulation
3
4
 
4
- from snappy.SnapPy import matrix, vector
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 = (matrix([[ 1.0, 0.0, 0.0, 0.0],
47
- ... [ 0.0, 1.0, 0.0, 0.0],
48
- ... [ 0.0, 0.0, 0.0,-1.0],
49
- ... [ 0.0, 0.0, 1.0, 0.0]]), 0, 0.0)
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 = matrix([[ 3.0 , 0.0 , 2.82, 0.0 ],
56
- ... [ 0.0 , 1.0 , 0.0 , 0.0 ],
57
- ... [ 2.82, 0.0 , 3.0 , 0.0 ],
58
- ... [ 0.0 , 0.0 , 0.0 , 1.0 ]])
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
- r._add_R13_planes_to_faces()
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._add_log_holonomies()
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(IdealRaytracingData, self).__init__(mcomplex)
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
- v0 | v1 : r13_dot(pt0, pt1)
151
- for v0, pt0 in tet.R13_vertices.items()
152
- for v1, pt1 in tet.R13_vertices.items()
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 _add_log_holonomies_to_cusp(self, cusp, shapes):
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(shape * expo
226
- for shape, expo
227
- in zip(shapes, self.peripheral_gluing_equations[2 * i + j]))
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.mat_log = matrix([[d,-b], [-c, a]]) / det
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
- slope = 2 * self.areas[i] / abs(det)
240
-
241
- x = (slope ** 2 / (slope ** 2 + 1)).sqrt()
242
- y = (1 / (slope ** 2 + 1)).sqrt()
243
- rSqr = 1 + (x ** 2 + (1 - y) ** 2) / (2 * y)
244
- cusp.margulisTubeRadiusParam = 0.25 * (1.0 + rSqr)
245
-
246
- def _add_log_holonomies(self):
247
- shapes = [
248
- tet.ShapeParameters[e].log()
249
- for tet in self.mcomplex.Tetrahedra
250
- for e in [ t3m.E01, t3m.E02, t3m.E03 ] ]
251
-
252
- for cusp, cusp_info in zip(self.mcomplex.Vertices,
253
- self.snappy_manifold.cusp_info()):
254
- self._add_log_holonomies_to_cusp(cusp, shapes)
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(IdealRaytracingData, self).get_uniform_bindings()
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
- mat_logs = [
313
- tet.Class[V].mat_log
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['matLogs'] = ('mat2[]', mat_logs)
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(IdealRaytracingData, self).get_compile_time_constants()
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 = matrix([[1.0,0.0,0.0,0.0],
348
- [0.0,1.0,0.0,0.0],
349
- [0.0,0.0,1.0,0.0],
350
- [0.0,0.0,0.0,1.0]])
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
- def __init__(self, mcomplex):
372
- super(NonGeometricRaytracingData, self).__init__(mcomplex)
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 = matrix([[1.0,0.0,0.0,0.0],
389
- [0.0,1.0,0.0,0.0],
390
- [0.0,0.0,1.0,0.0],
391
- [0.0,0.0,0.0,1.0]])
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=matrix([[1.0, 0.0, 0.0, 0.0],
398
- [0.0, 1.0, 0.0, 0.0],
399
- [0.0, 0.0, 1.0, 0.0],
400
- [0.0, 0.0, 0.0, 1.0]])):
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 = matrix([[d,-b], [-c, a]]) / (a*d - b * c)
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] * vector([1.0, x, 0.0, 0.0])
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 = matrix([[ scale*rotation, translation ],
519
- [ 0, 1 ]], ring=CF)
547
+ borel_transform = make_matrix([[ scale*rotation, translation ],
548
+ [ 0, 1 ]],
549
+ ring=CF)
520
550
 
521
- base_camera_matrix = 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] * vector(tet.R13_vertices[V])
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: