snappy 3.1__cp310-cp310-macosx_11_0_arm64.whl → 3.2__cp310-cp310-macosx_11_0_arm64.whl

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