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
@@ -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