vispy 0.15.0__cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.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.

Potentially problematic release.


This version of vispy might be problematic. Click here for more details.

Files changed (521) hide show
  1. vispy/__init__.py +33 -0
  2. vispy/app/__init__.py +15 -0
  3. vispy/app/_default_app.py +76 -0
  4. vispy/app/_detect_eventloop.py +148 -0
  5. vispy/app/application.py +263 -0
  6. vispy/app/backends/__init__.py +52 -0
  7. vispy/app/backends/_egl.py +264 -0
  8. vispy/app/backends/_glfw.py +513 -0
  9. vispy/app/backends/_jupyter_rfb.py +278 -0
  10. vispy/app/backends/_offscreen_util.py +121 -0
  11. vispy/app/backends/_osmesa.py +235 -0
  12. vispy/app/backends/_pyglet.py +451 -0
  13. vispy/app/backends/_pyqt4.py +36 -0
  14. vispy/app/backends/_pyqt5.py +36 -0
  15. vispy/app/backends/_pyqt6.py +40 -0
  16. vispy/app/backends/_pyside.py +37 -0
  17. vispy/app/backends/_pyside2.py +52 -0
  18. vispy/app/backends/_pyside6.py +53 -0
  19. vispy/app/backends/_qt.py +1003 -0
  20. vispy/app/backends/_sdl2.py +444 -0
  21. vispy/app/backends/_template.py +244 -0
  22. vispy/app/backends/_test.py +8 -0
  23. vispy/app/backends/_tk.py +800 -0
  24. vispy/app/backends/_wx.py +476 -0
  25. vispy/app/backends/tests/__init__.py +0 -0
  26. vispy/app/backends/tests/test_offscreen_util.py +52 -0
  27. vispy/app/backends/tests/test_rfb.py +77 -0
  28. vispy/app/base.py +294 -0
  29. vispy/app/canvas.py +828 -0
  30. vispy/app/qt.py +92 -0
  31. vispy/app/tests/__init__.py +0 -0
  32. vispy/app/tests/qt-designer.ui +58 -0
  33. vispy/app/tests/test_app.py +442 -0
  34. vispy/app/tests/test_backends.py +164 -0
  35. vispy/app/tests/test_canvas.py +122 -0
  36. vispy/app/tests/test_context.py +92 -0
  37. vispy/app/tests/test_qt.py +47 -0
  38. vispy/app/tests/test_simultaneous.py +134 -0
  39. vispy/app/timer.py +174 -0
  40. vispy/color/__init__.py +17 -0
  41. vispy/color/_color_dict.py +193 -0
  42. vispy/color/color_array.py +447 -0
  43. vispy/color/color_space.py +181 -0
  44. vispy/color/colormap.py +1213 -0
  45. vispy/color/tests/__init__.py +0 -0
  46. vispy/color/tests/test_color.py +378 -0
  47. vispy/conftest.py +12 -0
  48. vispy/ext/__init__.py +0 -0
  49. vispy/ext/cocoapy.py +1522 -0
  50. vispy/ext/cubehelix.py +138 -0
  51. vispy/ext/egl.py +375 -0
  52. vispy/ext/fontconfig.py +118 -0
  53. vispy/ext/gdi32plus.py +206 -0
  54. vispy/ext/osmesa.py +105 -0
  55. vispy/geometry/__init__.py +23 -0
  56. vispy/geometry/_triangulation_debugger.py +171 -0
  57. vispy/geometry/calculations.py +162 -0
  58. vispy/geometry/curves.py +399 -0
  59. vispy/geometry/generation.py +643 -0
  60. vispy/geometry/isocurve.py +175 -0
  61. vispy/geometry/isosurface.py +465 -0
  62. vispy/geometry/meshdata.py +700 -0
  63. vispy/geometry/normals.py +78 -0
  64. vispy/geometry/parametric.py +56 -0
  65. vispy/geometry/polygon.py +137 -0
  66. vispy/geometry/rect.py +210 -0
  67. vispy/geometry/tests/__init__.py +0 -0
  68. vispy/geometry/tests/test_calculations.py +23 -0
  69. vispy/geometry/tests/test_generation.py +56 -0
  70. vispy/geometry/tests/test_meshdata.py +106 -0
  71. vispy/geometry/tests/test_triangulation.py +594 -0
  72. vispy/geometry/torusknot.py +142 -0
  73. vispy/geometry/triangulation.py +876 -0
  74. vispy/gloo/__init__.py +56 -0
  75. vispy/gloo/buffer.py +505 -0
  76. vispy/gloo/context.py +272 -0
  77. vispy/gloo/framebuffer.py +257 -0
  78. vispy/gloo/gl/__init__.py +234 -0
  79. vispy/gloo/gl/_constants.py +332 -0
  80. vispy/gloo/gl/_es2.py +986 -0
  81. vispy/gloo/gl/_gl2.py +1365 -0
  82. vispy/gloo/gl/_proxy.py +499 -0
  83. vispy/gloo/gl/_pyopengl2.py +362 -0
  84. vispy/gloo/gl/dummy.py +24 -0
  85. vispy/gloo/gl/es2.py +62 -0
  86. vispy/gloo/gl/gl2.py +98 -0
  87. vispy/gloo/gl/glplus.py +168 -0
  88. vispy/gloo/gl/pyopengl2.py +97 -0
  89. vispy/gloo/gl/tests/__init__.py +0 -0
  90. vispy/gloo/gl/tests/test_basics.py +282 -0
  91. vispy/gloo/gl/tests/test_functionality.py +568 -0
  92. vispy/gloo/gl/tests/test_names.py +246 -0
  93. vispy/gloo/gl/tests/test_use.py +71 -0
  94. vispy/gloo/glir.py +1824 -0
  95. vispy/gloo/globject.py +101 -0
  96. vispy/gloo/preprocessor.py +67 -0
  97. vispy/gloo/program.py +543 -0
  98. vispy/gloo/tests/__init__.py +0 -0
  99. vispy/gloo/tests/test_buffer.py +558 -0
  100. vispy/gloo/tests/test_context.py +119 -0
  101. vispy/gloo/tests/test_framebuffer.py +195 -0
  102. vispy/gloo/tests/test_glir.py +307 -0
  103. vispy/gloo/tests/test_globject.py +35 -0
  104. vispy/gloo/tests/test_program.py +302 -0
  105. vispy/gloo/tests/test_texture.py +732 -0
  106. vispy/gloo/tests/test_use_gloo.py +187 -0
  107. vispy/gloo/tests/test_util.py +60 -0
  108. vispy/gloo/tests/test_wrappers.py +261 -0
  109. vispy/gloo/texture.py +1046 -0
  110. vispy/gloo/util.py +129 -0
  111. vispy/gloo/wrappers.py +762 -0
  112. vispy/glsl/__init__.py +42 -0
  113. vispy/glsl/antialias/antialias.glsl +7 -0
  114. vispy/glsl/antialias/cap-butt.glsl +31 -0
  115. vispy/glsl/antialias/cap-round.glsl +29 -0
  116. vispy/glsl/antialias/cap-square.glsl +30 -0
  117. vispy/glsl/antialias/cap-triangle-in.glsl +30 -0
  118. vispy/glsl/antialias/cap-triangle-out.glsl +30 -0
  119. vispy/glsl/antialias/cap.glsl +67 -0
  120. vispy/glsl/antialias/caps.glsl +67 -0
  121. vispy/glsl/antialias/filled.glsl +50 -0
  122. vispy/glsl/antialias/outline.glsl +40 -0
  123. vispy/glsl/antialias/stroke.glsl +43 -0
  124. vispy/glsl/arrowheads/angle.glsl +99 -0
  125. vispy/glsl/arrowheads/arrowheads.frag +60 -0
  126. vispy/glsl/arrowheads/arrowheads.glsl +12 -0
  127. vispy/glsl/arrowheads/arrowheads.vert +83 -0
  128. vispy/glsl/arrowheads/curved.glsl +48 -0
  129. vispy/glsl/arrowheads/inhibitor.glsl +26 -0
  130. vispy/glsl/arrowheads/stealth.glsl +46 -0
  131. vispy/glsl/arrowheads/triangle.glsl +97 -0
  132. vispy/glsl/arrowheads/util.glsl +13 -0
  133. vispy/glsl/arrows/angle-30.glsl +12 -0
  134. vispy/glsl/arrows/angle-60.glsl +12 -0
  135. vispy/glsl/arrows/angle-90.glsl +12 -0
  136. vispy/glsl/arrows/arrow.frag +39 -0
  137. vispy/glsl/arrows/arrow.vert +49 -0
  138. vispy/glsl/arrows/arrows.glsl +17 -0
  139. vispy/glsl/arrows/common.glsl +187 -0
  140. vispy/glsl/arrows/curved.glsl +63 -0
  141. vispy/glsl/arrows/stealth.glsl +50 -0
  142. vispy/glsl/arrows/triangle-30.glsl +12 -0
  143. vispy/glsl/arrows/triangle-60.glsl +12 -0
  144. vispy/glsl/arrows/triangle-90.glsl +12 -0
  145. vispy/glsl/arrows/util.glsl +98 -0
  146. vispy/glsl/build_spatial_filters.py +660 -0
  147. vispy/glsl/collections/agg-fast-path.frag +20 -0
  148. vispy/glsl/collections/agg-fast-path.vert +78 -0
  149. vispy/glsl/collections/agg-glyph.frag +60 -0
  150. vispy/glsl/collections/agg-glyph.vert +33 -0
  151. vispy/glsl/collections/agg-marker.frag +35 -0
  152. vispy/glsl/collections/agg-marker.vert +48 -0
  153. vispy/glsl/collections/agg-path.frag +55 -0
  154. vispy/glsl/collections/agg-path.vert +166 -0
  155. vispy/glsl/collections/agg-point.frag +21 -0
  156. vispy/glsl/collections/agg-point.vert +35 -0
  157. vispy/glsl/collections/agg-segment.frag +32 -0
  158. vispy/glsl/collections/agg-segment.vert +75 -0
  159. vispy/glsl/collections/marker.frag +38 -0
  160. vispy/glsl/collections/marker.vert +48 -0
  161. vispy/glsl/collections/raw-path.frag +15 -0
  162. vispy/glsl/collections/raw-path.vert +24 -0
  163. vispy/glsl/collections/raw-point.frag +14 -0
  164. vispy/glsl/collections/raw-point.vert +31 -0
  165. vispy/glsl/collections/raw-segment.frag +18 -0
  166. vispy/glsl/collections/raw-segment.vert +26 -0
  167. vispy/glsl/collections/raw-triangle.frag +13 -0
  168. vispy/glsl/collections/raw-triangle.vert +26 -0
  169. vispy/glsl/collections/sdf-glyph-ticks.vert +69 -0
  170. vispy/glsl/collections/sdf-glyph.frag +80 -0
  171. vispy/glsl/collections/sdf-glyph.vert +59 -0
  172. vispy/glsl/collections/tick-labels.vert +71 -0
  173. vispy/glsl/colormaps/autumn.glsl +20 -0
  174. vispy/glsl/colormaps/blues.glsl +20 -0
  175. vispy/glsl/colormaps/color-space.glsl +17 -0
  176. vispy/glsl/colormaps/colormaps.glsl +24 -0
  177. vispy/glsl/colormaps/cool.glsl +20 -0
  178. vispy/glsl/colormaps/fire.glsl +21 -0
  179. vispy/glsl/colormaps/gray.glsl +20 -0
  180. vispy/glsl/colormaps/greens.glsl +20 -0
  181. vispy/glsl/colormaps/hot.glsl +22 -0
  182. vispy/glsl/colormaps/ice.glsl +20 -0
  183. vispy/glsl/colormaps/icefire.glsl +23 -0
  184. vispy/glsl/colormaps/parse.py +40 -0
  185. vispy/glsl/colormaps/reds.glsl +20 -0
  186. vispy/glsl/colormaps/spring.glsl +20 -0
  187. vispy/glsl/colormaps/summer.glsl +20 -0
  188. vispy/glsl/colormaps/user.glsl +22 -0
  189. vispy/glsl/colormaps/util.glsl +41 -0
  190. vispy/glsl/colormaps/wheel.glsl +21 -0
  191. vispy/glsl/colormaps/winter.glsl +20 -0
  192. vispy/glsl/lines/agg.frag +320 -0
  193. vispy/glsl/lines/agg.vert +241 -0
  194. vispy/glsl/markers/arrow.glsl +12 -0
  195. vispy/glsl/markers/asterisk.glsl +16 -0
  196. vispy/glsl/markers/chevron.glsl +14 -0
  197. vispy/glsl/markers/clover.glsl +20 -0
  198. vispy/glsl/markers/club.glsl +31 -0
  199. vispy/glsl/markers/cross.glsl +17 -0
  200. vispy/glsl/markers/diamond.glsl +12 -0
  201. vispy/glsl/markers/disc.glsl +9 -0
  202. vispy/glsl/markers/ellipse.glsl +67 -0
  203. vispy/glsl/markers/hbar.glsl +9 -0
  204. vispy/glsl/markers/heart.glsl +15 -0
  205. vispy/glsl/markers/infinity.glsl +15 -0
  206. vispy/glsl/markers/marker-sdf.frag +74 -0
  207. vispy/glsl/markers/marker-sdf.vert +41 -0
  208. vispy/glsl/markers/marker.frag +36 -0
  209. vispy/glsl/markers/marker.vert +46 -0
  210. vispy/glsl/markers/markers.glsl +24 -0
  211. vispy/glsl/markers/pin.glsl +18 -0
  212. vispy/glsl/markers/ring.glsl +11 -0
  213. vispy/glsl/markers/spade.glsl +28 -0
  214. vispy/glsl/markers/square.glsl +10 -0
  215. vispy/glsl/markers/tag.glsl +11 -0
  216. vispy/glsl/markers/triangle.glsl +14 -0
  217. vispy/glsl/markers/vbar.glsl +9 -0
  218. vispy/glsl/math/circle-through-2-points.glsl +30 -0
  219. vispy/glsl/math/constants.glsl +48 -0
  220. vispy/glsl/math/double.glsl +114 -0
  221. vispy/glsl/math/functions.glsl +20 -0
  222. vispy/glsl/math/point-to-line-distance.glsl +31 -0
  223. vispy/glsl/math/point-to-line-projection.glsl +29 -0
  224. vispy/glsl/math/signed-line-distance.glsl +27 -0
  225. vispy/glsl/math/signed-segment-distance.glsl +30 -0
  226. vispy/glsl/misc/regular-grid.frag +244 -0
  227. vispy/glsl/misc/spatial-filters.frag +1407 -0
  228. vispy/glsl/misc/viewport-NDC.glsl +20 -0
  229. vispy/glsl/transforms/azimuthal-equal-area.glsl +32 -0
  230. vispy/glsl/transforms/azimuthal-equidistant.glsl +38 -0
  231. vispy/glsl/transforms/hammer.glsl +44 -0
  232. vispy/glsl/transforms/identity.glsl +6 -0
  233. vispy/glsl/transforms/identity_forward.glsl +23 -0
  234. vispy/glsl/transforms/identity_inverse.glsl +23 -0
  235. vispy/glsl/transforms/linear-scale.glsl +127 -0
  236. vispy/glsl/transforms/log-scale.glsl +126 -0
  237. vispy/glsl/transforms/mercator-transverse-forward.glsl +40 -0
  238. vispy/glsl/transforms/mercator-transverse-inverse.glsl +40 -0
  239. vispy/glsl/transforms/panzoom.glsl +10 -0
  240. vispy/glsl/transforms/polar.glsl +41 -0
  241. vispy/glsl/transforms/position.glsl +44 -0
  242. vispy/glsl/transforms/power-scale.glsl +139 -0
  243. vispy/glsl/transforms/projection.glsl +7 -0
  244. vispy/glsl/transforms/pvm.glsl +13 -0
  245. vispy/glsl/transforms/rotate.glsl +45 -0
  246. vispy/glsl/transforms/trackball.glsl +15 -0
  247. vispy/glsl/transforms/translate.glsl +35 -0
  248. vispy/glsl/transforms/transverse_mercator.glsl +38 -0
  249. vispy/glsl/transforms/viewport-clipping.glsl +14 -0
  250. vispy/glsl/transforms/viewport-transform.glsl +16 -0
  251. vispy/glsl/transforms/viewport.glsl +50 -0
  252. vispy/glsl/transforms/x.glsl +24 -0
  253. vispy/glsl/transforms/y.glsl +19 -0
  254. vispy/glsl/transforms/z.glsl +14 -0
  255. vispy/io/__init__.py +20 -0
  256. vispy/io/_data/spatial-filters.npy +0 -0
  257. vispy/io/datasets.py +94 -0
  258. vispy/io/image.py +231 -0
  259. vispy/io/mesh.py +122 -0
  260. vispy/io/stl.py +167 -0
  261. vispy/io/tests/__init__.py +0 -0
  262. vispy/io/tests/test_image.py +47 -0
  263. vispy/io/tests/test_io.py +121 -0
  264. vispy/io/wavefront.py +350 -0
  265. vispy/plot/__init__.py +36 -0
  266. vispy/plot/fig.py +58 -0
  267. vispy/plot/plotwidget.py +522 -0
  268. vispy/plot/tests/__init__.py +0 -0
  269. vispy/plot/tests/test_plot.py +46 -0
  270. vispy/scene/__init__.py +43 -0
  271. vispy/scene/cameras/__init__.py +27 -0
  272. vispy/scene/cameras/_base.py +38 -0
  273. vispy/scene/cameras/arcball.py +105 -0
  274. vispy/scene/cameras/base_camera.py +551 -0
  275. vispy/scene/cameras/fly.py +474 -0
  276. vispy/scene/cameras/magnify.py +163 -0
  277. vispy/scene/cameras/panzoom.py +311 -0
  278. vispy/scene/cameras/perspective.py +338 -0
  279. vispy/scene/cameras/tests/__init__.py +0 -0
  280. vispy/scene/cameras/tests/test_cameras.py +27 -0
  281. vispy/scene/cameras/tests/test_link.py +53 -0
  282. vispy/scene/cameras/tests/test_perspective.py +122 -0
  283. vispy/scene/cameras/turntable.py +183 -0
  284. vispy/scene/canvas.py +639 -0
  285. vispy/scene/events.py +85 -0
  286. vispy/scene/node.py +644 -0
  287. vispy/scene/subscene.py +20 -0
  288. vispy/scene/tests/__init__.py +0 -0
  289. vispy/scene/tests/test_canvas.py +119 -0
  290. vispy/scene/tests/test_node.py +142 -0
  291. vispy/scene/tests/test_visuals.py +141 -0
  292. vispy/scene/visuals.py +276 -0
  293. vispy/scene/widgets/__init__.py +18 -0
  294. vispy/scene/widgets/anchor.py +25 -0
  295. vispy/scene/widgets/axis.py +88 -0
  296. vispy/scene/widgets/colorbar.py +176 -0
  297. vispy/scene/widgets/console.py +351 -0
  298. vispy/scene/widgets/grid.py +509 -0
  299. vispy/scene/widgets/label.py +50 -0
  300. vispy/scene/widgets/tests/__init__.py +0 -0
  301. vispy/scene/widgets/tests/test_colorbar.py +47 -0
  302. vispy/scene/widgets/viewbox.py +199 -0
  303. vispy/scene/widgets/widget.py +478 -0
  304. vispy/testing/__init__.py +51 -0
  305. vispy/testing/_runners.py +448 -0
  306. vispy/testing/_testing.py +416 -0
  307. vispy/testing/image_tester.py +494 -0
  308. vispy/testing/rendered_array_tester.py +85 -0
  309. vispy/testing/tests/__init__.py +0 -0
  310. vispy/testing/tests/test_testing.py +20 -0
  311. vispy/util/__init__.py +32 -0
  312. vispy/util/bunch.py +15 -0
  313. vispy/util/check_environment.py +57 -0
  314. vispy/util/config.py +490 -0
  315. vispy/util/dpi/__init__.py +19 -0
  316. vispy/util/dpi/_linux.py +69 -0
  317. vispy/util/dpi/_quartz.py +26 -0
  318. vispy/util/dpi/_win32.py +34 -0
  319. vispy/util/dpi/tests/__init__.py +0 -0
  320. vispy/util/dpi/tests/test_dpi.py +16 -0
  321. vispy/util/eq.py +41 -0
  322. vispy/util/event.py +774 -0
  323. vispy/util/fetching.py +276 -0
  324. vispy/util/filter.py +44 -0
  325. vispy/util/fonts/__init__.py +14 -0
  326. vispy/util/fonts/_freetype.py +73 -0
  327. vispy/util/fonts/_quartz.py +192 -0
  328. vispy/util/fonts/_triage.py +36 -0
  329. vispy/util/fonts/_vispy_fonts.py +20 -0
  330. vispy/util/fonts/_win32.py +105 -0
  331. vispy/util/fonts/data/OpenSans-Bold.ttf +0 -0
  332. vispy/util/fonts/data/OpenSans-BoldItalic.ttf +0 -0
  333. vispy/util/fonts/data/OpenSans-Italic.ttf +0 -0
  334. vispy/util/fonts/data/OpenSans-Regular.ttf +0 -0
  335. vispy/util/fonts/tests/__init__.py +0 -0
  336. vispy/util/fonts/tests/test_font.py +45 -0
  337. vispy/util/fourier.py +69 -0
  338. vispy/util/frozen.py +25 -0
  339. vispy/util/gallery_scraper.py +268 -0
  340. vispy/util/keys.py +91 -0
  341. vispy/util/logs.py +358 -0
  342. vispy/util/osmesa_gl.py +17 -0
  343. vispy/util/profiler.py +135 -0
  344. vispy/util/ptime.py +16 -0
  345. vispy/util/quaternion.py +229 -0
  346. vispy/util/svg/__init__.py +18 -0
  347. vispy/util/svg/base.py +20 -0
  348. vispy/util/svg/color.py +219 -0
  349. vispy/util/svg/element.py +51 -0
  350. vispy/util/svg/geometry.py +478 -0
  351. vispy/util/svg/group.py +66 -0
  352. vispy/util/svg/length.py +81 -0
  353. vispy/util/svg/number.py +25 -0
  354. vispy/util/svg/path.py +332 -0
  355. vispy/util/svg/shapes.py +57 -0
  356. vispy/util/svg/style.py +59 -0
  357. vispy/util/svg/svg.py +40 -0
  358. vispy/util/svg/transform.py +223 -0
  359. vispy/util/svg/transformable.py +28 -0
  360. vispy/util/svg/viewport.py +73 -0
  361. vispy/util/tests/__init__.py +0 -0
  362. vispy/util/tests/test_config.py +58 -0
  363. vispy/util/tests/test_docstring_parameters.py +123 -0
  364. vispy/util/tests/test_emitter_group.py +262 -0
  365. vispy/util/tests/test_event_emitter.py +743 -0
  366. vispy/util/tests/test_fourier.py +35 -0
  367. vispy/util/tests/test_gallery_scraper.py +112 -0
  368. vispy/util/tests/test_import.py +127 -0
  369. vispy/util/tests/test_key.py +22 -0
  370. vispy/util/tests/test_logging.py +45 -0
  371. vispy/util/tests/test_run.py +14 -0
  372. vispy/util/tests/test_transforms.py +42 -0
  373. vispy/util/tests/test_vispy.py +48 -0
  374. vispy/util/transforms.py +201 -0
  375. vispy/util/wrappers.py +155 -0
  376. vispy/version.py +21 -0
  377. vispy/visuals/__init__.py +50 -0
  378. vispy/visuals/_scalable_textures.py +487 -0
  379. vispy/visuals/axis.py +678 -0
  380. vispy/visuals/border.py +208 -0
  381. vispy/visuals/box.py +79 -0
  382. vispy/visuals/collections/__init__.py +30 -0
  383. vispy/visuals/collections/agg_fast_path_collection.py +219 -0
  384. vispy/visuals/collections/agg_path_collection.py +197 -0
  385. vispy/visuals/collections/agg_point_collection.py +52 -0
  386. vispy/visuals/collections/agg_segment_collection.py +142 -0
  387. vispy/visuals/collections/array_list.py +401 -0
  388. vispy/visuals/collections/base_collection.py +482 -0
  389. vispy/visuals/collections/collection.py +253 -0
  390. vispy/visuals/collections/path_collection.py +23 -0
  391. vispy/visuals/collections/point_collection.py +19 -0
  392. vispy/visuals/collections/polygon_collection.py +25 -0
  393. vispy/visuals/collections/raw_path_collection.py +119 -0
  394. vispy/visuals/collections/raw_point_collection.py +113 -0
  395. vispy/visuals/collections/raw_polygon_collection.py +77 -0
  396. vispy/visuals/collections/raw_segment_collection.py +112 -0
  397. vispy/visuals/collections/raw_triangle_collection.py +78 -0
  398. vispy/visuals/collections/segment_collection.py +19 -0
  399. vispy/visuals/collections/triangle_collection.py +16 -0
  400. vispy/visuals/collections/util.py +168 -0
  401. vispy/visuals/colorbar.py +699 -0
  402. vispy/visuals/cube.py +41 -0
  403. vispy/visuals/ellipse.py +162 -0
  404. vispy/visuals/filters/__init__.py +10 -0
  405. vispy/visuals/filters/base_filter.py +242 -0
  406. vispy/visuals/filters/clipper.py +60 -0
  407. vispy/visuals/filters/clipping_planes.py +122 -0
  408. vispy/visuals/filters/color.py +181 -0
  409. vispy/visuals/filters/markers.py +28 -0
  410. vispy/visuals/filters/mesh.py +801 -0
  411. vispy/visuals/filters/picking.py +60 -0
  412. vispy/visuals/filters/tests/__init__.py +3 -0
  413. vispy/visuals/filters/tests/test_primitive_picking_filters.py +70 -0
  414. vispy/visuals/filters/tests/test_wireframe_filter.py +16 -0
  415. vispy/visuals/glsl/__init__.py +1 -0
  416. vispy/visuals/glsl/antialiasing.py +133 -0
  417. vispy/visuals/glsl/color.py +63 -0
  418. vispy/visuals/graphs/__init__.py +1 -0
  419. vispy/visuals/graphs/graph.py +240 -0
  420. vispy/visuals/graphs/layouts/__init__.py +55 -0
  421. vispy/visuals/graphs/layouts/circular.py +49 -0
  422. vispy/visuals/graphs/layouts/force_directed.py +211 -0
  423. vispy/visuals/graphs/layouts/networkx_layout.py +87 -0
  424. vispy/visuals/graphs/layouts/random.py +52 -0
  425. vispy/visuals/graphs/tests/__init__.py +1 -0
  426. vispy/visuals/graphs/tests/test_layouts.py +139 -0
  427. vispy/visuals/graphs/tests/test_networkx_layout.py +47 -0
  428. vispy/visuals/graphs/util.py +120 -0
  429. vispy/visuals/gridlines.py +161 -0
  430. vispy/visuals/gridmesh.py +98 -0
  431. vispy/visuals/histogram.py +58 -0
  432. vispy/visuals/image.py +701 -0
  433. vispy/visuals/image_complex.py +130 -0
  434. vispy/visuals/infinite_line.py +199 -0
  435. vispy/visuals/instanced_mesh.py +152 -0
  436. vispy/visuals/isocurve.py +213 -0
  437. vispy/visuals/isoline.py +241 -0
  438. vispy/visuals/isosurface.py +113 -0
  439. vispy/visuals/line/__init__.py +6 -0
  440. vispy/visuals/line/arrow.py +289 -0
  441. vispy/visuals/line/dash_atlas.py +90 -0
  442. vispy/visuals/line/line.py +545 -0
  443. vispy/visuals/line_plot.py +135 -0
  444. vispy/visuals/linear_region.py +199 -0
  445. vispy/visuals/markers.py +819 -0
  446. vispy/visuals/mesh.py +373 -0
  447. vispy/visuals/mesh_normals.py +159 -0
  448. vispy/visuals/plane.py +54 -0
  449. vispy/visuals/polygon.py +145 -0
  450. vispy/visuals/rectangle.py +196 -0
  451. vispy/visuals/regular_polygon.py +56 -0
  452. vispy/visuals/scrolling_lines.py +197 -0
  453. vispy/visuals/shaders/__init__.py +17 -0
  454. vispy/visuals/shaders/compiler.py +206 -0
  455. vispy/visuals/shaders/expression.py +99 -0
  456. vispy/visuals/shaders/function.py +788 -0
  457. vispy/visuals/shaders/multiprogram.py +145 -0
  458. vispy/visuals/shaders/parsing.py +140 -0
  459. vispy/visuals/shaders/program.py +161 -0
  460. vispy/visuals/shaders/shader_object.py +162 -0
  461. vispy/visuals/shaders/tests/__init__.py +0 -0
  462. vispy/visuals/shaders/tests/test_function.py +486 -0
  463. vispy/visuals/shaders/tests/test_multiprogram.py +78 -0
  464. vispy/visuals/shaders/tests/test_parsing.py +57 -0
  465. vispy/visuals/shaders/variable.py +272 -0
  466. vispy/visuals/spectrogram.py +169 -0
  467. vispy/visuals/sphere.py +80 -0
  468. vispy/visuals/surface_plot.py +192 -0
  469. vispy/visuals/tests/__init__.py +0 -0
  470. vispy/visuals/tests/test_arrows.py +109 -0
  471. vispy/visuals/tests/test_axis.py +120 -0
  472. vispy/visuals/tests/test_collections.py +15 -0
  473. vispy/visuals/tests/test_colorbar.py +179 -0
  474. vispy/visuals/tests/test_colormap.py +97 -0
  475. vispy/visuals/tests/test_ellipse.py +122 -0
  476. vispy/visuals/tests/test_gridlines.py +30 -0
  477. vispy/visuals/tests/test_histogram.py +24 -0
  478. vispy/visuals/tests/test_image.py +392 -0
  479. vispy/visuals/tests/test_image_complex.py +36 -0
  480. vispy/visuals/tests/test_infinite_line.py +53 -0
  481. vispy/visuals/tests/test_instanced_mesh.py +50 -0
  482. vispy/visuals/tests/test_isosurface.py +22 -0
  483. vispy/visuals/tests/test_linear_region.py +152 -0
  484. vispy/visuals/tests/test_markers.py +54 -0
  485. vispy/visuals/tests/test_mesh.py +261 -0
  486. vispy/visuals/tests/test_mesh_normals.py +218 -0
  487. vispy/visuals/tests/test_polygon.py +112 -0
  488. vispy/visuals/tests/test_rectangle.py +163 -0
  489. vispy/visuals/tests/test_regular_polygon.py +111 -0
  490. vispy/visuals/tests/test_scalable_textures.py +196 -0
  491. vispy/visuals/tests/test_sdf.py +73 -0
  492. vispy/visuals/tests/test_spectrogram.py +42 -0
  493. vispy/visuals/tests/test_surface_plot.py +57 -0
  494. vispy/visuals/tests/test_text.py +95 -0
  495. vispy/visuals/tests/test_volume.py +542 -0
  496. vispy/visuals/tests/test_windbarb.py +33 -0
  497. vispy/visuals/text/__init__.py +7 -0
  498. vispy/visuals/text/_sdf_cpu.cpython-313-x86_64-linux-gnu.so +0 -0
  499. vispy/visuals/text/_sdf_cpu.pyx +112 -0
  500. vispy/visuals/text/_sdf_gpu.py +316 -0
  501. vispy/visuals/text/text.py +675 -0
  502. vispy/visuals/transforms/__init__.py +34 -0
  503. vispy/visuals/transforms/_util.py +191 -0
  504. vispy/visuals/transforms/base_transform.py +233 -0
  505. vispy/visuals/transforms/chain.py +300 -0
  506. vispy/visuals/transforms/interactive.py +98 -0
  507. vispy/visuals/transforms/linear.py +564 -0
  508. vispy/visuals/transforms/nonlinear.py +398 -0
  509. vispy/visuals/transforms/tests/__init__.py +0 -0
  510. vispy/visuals/transforms/tests/test_transforms.py +243 -0
  511. vispy/visuals/transforms/transform_system.py +339 -0
  512. vispy/visuals/tube.py +173 -0
  513. vispy/visuals/visual.py +923 -0
  514. vispy/visuals/volume.py +1366 -0
  515. vispy/visuals/windbarb.py +291 -0
  516. vispy/visuals/xyz_axis.py +34 -0
  517. vispy-0.15.0.dist-info/METADATA +243 -0
  518. vispy-0.15.0.dist-info/RECORD +521 -0
  519. vispy-0.15.0.dist-info/WHEEL +6 -0
  520. vispy-0.15.0.dist-info/licenses/LICENSE.txt +36 -0
  521. vispy-0.15.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,46 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ // Hooks:
6
+ // <transform> : vec4 function(position, ...)
7
+ //
8
+ // ----------------------------------------------------------------------------
9
+ #include "math/constants.glsl"
10
+
11
+ // Uniforms
12
+ // ------------------------------------
13
+ uniform float antialias;
14
+
15
+ // Attributes
16
+ // ------------------------------------
17
+ attribute vec2 position;
18
+ attribute float size;
19
+ attribute vec4 fg_color;
20
+ attribute vec4 bg_color;
21
+ attribute float orientation;
22
+ attribute float linewidth;
23
+
24
+ // Varyings
25
+ // ------------------------------------
26
+ varying float v_size;
27
+ varying vec4 v_fg_color;
28
+ varying vec4 v_bg_color;
29
+ varying vec2 v_orientation;
30
+ varying float v_antialias;
31
+ varying float v_linewidth;
32
+
33
+ // Main (hooked)
34
+ // ------------------------------------
35
+ void main (void)
36
+ {
37
+ v_size = size;
38
+ v_linewidth = linewidth;
39
+ v_antialias = antialias;
40
+ v_fg_color = fg_color;
41
+ v_bg_color = bg_color;
42
+ v_orientation = vec2(cos(orientation), sin(orientation));
43
+
44
+ gl_Position = <transform>;
45
+ gl_PointSize = M_SQRT2 * size + 2.0 * (linewidth + 1.5*antialias);
46
+ }
@@ -0,0 +1,24 @@
1
+ // -----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // -----------------------------------------------------------------------------
5
+
6
+ #include "markers/arrow.glsl"
7
+ #include "markers/asterisk.glsl"
8
+ #include "markers/chevron.glsl"
9
+ #include "markers/clover.glsl"
10
+ #include "markers/club.glsl"
11
+ #include "markers/cross.glsl"
12
+ #include "markers/diamond.glsl"
13
+ #include "markers/disc.glsl"
14
+ #include "markers/ellipse.glsl"
15
+ #include "markers/hbar.glsl"
16
+ #include "markers/heart.glsl"
17
+ #include "markers/infinity.glsl"
18
+ #include "markers/pin.glsl"
19
+ #include "markers/ring.glsl"
20
+ #include "markers/spade.glsl"
21
+ #include "markers/square.glsl"
22
+ #include "markers/tag.glsl"
23
+ #include "markers/triangle.glsl"
24
+ #include "markers/vbar.glsl"
@@ -0,0 +1,18 @@
1
+ // -----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // -----------------------------------------------------------------------------
5
+
6
+ float marker_pin(vec2 P, float size)
7
+ {
8
+ size *= .9;
9
+
10
+ vec2 c1 = vec2(0.0,-0.15)*size;
11
+ float r1 = length(P-c1)-size/2.675;
12
+ vec2 c2 = vec2(+1.49,-0.80)*size;
13
+ float r2 = length(P-c2) - 2.*size;
14
+ vec2 c3 = vec2(-1.49,-0.80)*size;
15
+ float r3 = length(P-c3) - 2.*size;
16
+ float r4 = length(P-c1)-size/5;
17
+ return max( min(r1,max(max(r2,r3),-P.y)), -r4);
18
+ }
@@ -0,0 +1,11 @@
1
+ // -----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // -----------------------------------------------------------------------------
5
+
6
+ float marker_ring(vec2 P, float size)
7
+ {
8
+ float r1 = length(P) - size/2.;
9
+ float r2 = length(P) - size/4.;
10
+ return max(r1,-r2);
11
+ }
@@ -0,0 +1,28 @@
1
+ // -----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // -----------------------------------------------------------------------------
5
+ #include "math/constants.glsl"
6
+
7
+ float marker_spade(vec2 P, float size)
8
+ {
9
+ // Reversed heart (diamond + 2 circles)
10
+ float s= size * 0.85 / 3.5;
11
+ float x = M_SQRT2/2.0 * (P.x + P.y) + 0.4*s;
12
+ float y = M_SQRT2/2.0 * (P.x - P.y) - 0.4*s;
13
+ float r1 = max(abs(x),abs(y)) - s;
14
+ float r2 = length(P - M_SQRT2/2.0*vec2(+1.0,+0.2)*s) - s;
15
+ float r3 = length(P - M_SQRT2/2.0*vec2(-1.0,+0.2)*s) - s;
16
+ float r4 = min(min(r1,r2),r3);
17
+
18
+ // Root (2 circles and 2 planes)
19
+ const vec2 c1 = vec2(+0.65, 0.125);
20
+ const vec2 c2 = vec2(-0.65, 0.125);
21
+ float r5 = length(P-c1*size) - size/1.6;
22
+ float r6 = length(P-c2*size) - size/1.6;
23
+ float r7 = P.y - 0.5*size;
24
+ float r8 = 0.1*size - P.y;
25
+ float r9 = max(-min(r5,r6), max(r7,r8));
26
+
27
+ return min(r4,r9);
28
+ }
@@ -0,0 +1,10 @@
1
+ // -----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // -----------------------------------------------------------------------------
5
+ #include "math/constants.glsl"
6
+
7
+ float marker_square(vec2 P, float size)
8
+ {
9
+ return max(abs(P.x), abs(P.y)) - size/2.0;
10
+ }
@@ -0,0 +1,11 @@
1
+ // -----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // -----------------------------------------------------------------------------
5
+
6
+ float marker_tag(vec2 P, float size)
7
+ {
8
+ float r1 = max(abs(P.x)- size/2.0, abs(P.y)- size/6.0);
9
+ float r2 = abs(P.x-size/2.0)+abs(P.y)-size;
10
+ return max(r1,.75*r2);
11
+ }
@@ -0,0 +1,14 @@
1
+ // -----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // -----------------------------------------------------------------------------
5
+ #include "math/constants.glsl"
6
+
7
+ float marker_triangle(vec2 P, float size)
8
+ {
9
+ float x = M_SQRT2/2.0 * (P.x - (P.y-size/6));
10
+ float y = M_SQRT2/2.0 * (P.x + (P.y-size/6));
11
+ float r1 = max(abs(x), abs(y)) - size/(2.0*M_SQRT2);
12
+ float r2 = P.y-size/6;
13
+ return max(r1,r2);
14
+ }
@@ -0,0 +1,9 @@
1
+ // -----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // -----------------------------------------------------------------------------
5
+
6
+ float marker_vbar(vec2 P, float size)
7
+ {
8
+ return max(abs(P.y)- size/2.0, abs(P.x)- size/6.0);
9
+ }
@@ -0,0 +1,30 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+
8
+ Computes the center of the 2 circles with given radius passing through
9
+ p1 & p2
10
+
11
+ Parameters:
12
+ -----------
13
+
14
+ p0, p1: Points ascribed in the circles
15
+ radius: Radius of the circle
16
+
17
+ Return:
18
+ -------
19
+ Centers of the two circles with specified radius
20
+
21
+ --------------------------------------------------------- */
22
+
23
+ vec4 circle_from_2_points(vec2 p1, vec2 p2, float radius)
24
+ {
25
+ float q = length(p2-p1);
26
+ vec2 m = (p1+p2)/2.0;
27
+ vec2 d = vec2( sqrt(radius*radius - (q*q/4.0)) * (p1.y-p2.y)/q,
28
+ sqrt(radius*radius - (q*q/4.0)) * (p2.x-p1.x)/q);
29
+ return vec4(m+d, m-d);
30
+ }
@@ -0,0 +1,48 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ #ifndef _CONSTANTS_
7
+ #define _CONSTANTS_
8
+
9
+ // The base of natural logarithms (e)
10
+ const float M_E = 2.71828182845904523536028747135266250;
11
+
12
+ // The logarithm to base 2 of M_E (log2(e))
13
+ const float M_LOG2E = 1.44269504088896340735992468100189214;
14
+
15
+ // The logarithm to base 10 of M_E (log10(e))
16
+ const float M_LOG10E = 0.434294481903251827651128918916605082;
17
+
18
+ // The natural logarithm of 2 (loge(2))
19
+ const float M_LN2 = 0.693147180559945309417232121458176568;
20
+
21
+ // The natural logarithm of 10 (loge(10))
22
+ const float M_LN10 = 2.30258509299404568401799145468436421;
23
+
24
+ // Pi, the ratio of a circle's circumference to its diameter.
25
+ const float M_PI = 3.14159265358979323846264338327950288;
26
+
27
+ // Pi divided by two (pi/2)
28
+ const float M_PI_2 = 1.57079632679489661923132169163975144;
29
+
30
+ // Pi divided by four (pi/4)
31
+ const float M_PI_4 = 0.785398163397448309615660845819875721;
32
+
33
+ // The reciprocal of pi (1/pi)
34
+ const float M_1_PI = 0.318309886183790671537767526745028724;
35
+
36
+ // Two times the reciprocal of pi (2/pi)
37
+ const float M_2_PI = 0.636619772367581343075535053490057448;
38
+
39
+ // Two times the reciprocal of the square root of pi (2/sqrt(pi))
40
+ const float M_2_SQRTPI = 1.12837916709551257389615890312154517;
41
+
42
+ // The square root of two (sqrt(2))
43
+ const float M_SQRT2 = 1.41421356237309504880168872420969808;
44
+
45
+ // The reciprocal of the square root of two (1/sqrt(2))
46
+ const float M_SQRT1_2 = 0.707106781186547524400844362104849039;
47
+
48
+ #endif
@@ -0,0 +1,114 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+ /*
6
+ This shader program emulates double-precision variables using a vec2 instead
7
+ of single-precision floats. Any function starting with double_* operates on
8
+ these variables. See https://blog.cyclemap.link/2011-06-09-glsl-part2-emu/.
9
+
10
+ NOTE: Some NVIDIA cards optimize the double-precision code away. Results are
11
+ therefore hardware dependent.
12
+ */
13
+ #define double vec2
14
+
15
+
16
+ /* -------------------------------------------------------------------------
17
+
18
+ Create an emulated double by storing first part of float in first half of
19
+ vec2
20
+
21
+ ------------------------------------------------------------------------- */
22
+
23
+ vec2 double_set(float value)
24
+ {
25
+ double result;
26
+ result.x = value;
27
+ result.y = 0.0;
28
+ return result;
29
+ }
30
+
31
+
32
+
33
+ /* -------------------------------------------------------------------------
34
+
35
+ Add two emulated doubles. Complexity comes from carry-over.
36
+
37
+ ------------------------------------------------------------------------- */
38
+
39
+ vec2 double_add(double value_a, double value_b)
40
+ {
41
+ double result;
42
+ float t1, t2, e;
43
+
44
+ t1 = value_a.x + value_b.x;
45
+ e = t1 - value_a.x;
46
+ t2 = ((value_b.x - e) + (value_a.x - (t1 - e))) + value_a.y + value_b.y;
47
+ result.x = t1 + t2;
48
+ result.y = t2 - (result.x - t1);
49
+ return result;
50
+ }
51
+
52
+
53
+
54
+ /* -------------------------------------------------------------------------
55
+
56
+ Multiply two emulated doubles.
57
+
58
+ ------------------------------------------------------------------------- */
59
+
60
+ vec2 double_mul(double value_a, double value_b)
61
+ {
62
+ double result;
63
+ float c11, c21, c2, e, t1, t2;
64
+ float a1, a2, b1, b2, cona, conb, split = 8193.;
65
+
66
+ cona = value_a.x * split;
67
+ conb = value_b.x * split;
68
+ a1 = cona - (cona - value_a.x);
69
+ b1 = conb - (conb - value_b.x);
70
+ a2 = value_a.x - a1;
71
+ b2 = value_b.x - b1;
72
+
73
+ c11 = value_a.x * value_b.x;
74
+ c21 = a2 * b2 + (a2 * b1 + (a1 * b2 + (a1 * b1 - c11)));
75
+
76
+ c2 = value_a.x * value_b.y + value_a.y * value_b.x;
77
+
78
+ t1 = c11 + c2;
79
+ e = t1 - c11;
80
+ t2 = value_a.y * value_b.y + ((c2 - e) + (c11 - (t1 - e))) + c21;
81
+
82
+ result.x = t1 + t2;
83
+ result.y = t2 - (result.x - t1);
84
+
85
+ return result;
86
+ }
87
+
88
+
89
+
90
+ /* -------------------------------------------------------------------------
91
+
92
+ Compare two emulated doubles.
93
+ Return -1 if a < b
94
+ 0 if a == b
95
+ 1 if a > b
96
+
97
+ ------------------------------------------------------------------------- */
98
+
99
+ float double_compare(double value_a, double value_b)
100
+ {
101
+ if (value_a.x < value_b.x) {
102
+ return -1.;
103
+ } else if (value_a.x == value_b.x) {
104
+ if (value_a.y < value_b.y) {
105
+ return -1.;
106
+ } else if (value_a.y == value_b.y) {
107
+ return 0.;
108
+ } else {
109
+ return 1.;
110
+ }
111
+ } else {
112
+ return 1.;
113
+ }
114
+ }
@@ -0,0 +1,20 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+ Hyperbolic cosine
8
+ --------------------------------------------------------- */
9
+ float cosh(float x)
10
+ {
11
+ return 0.5 * (exp(x)+exp(-x));
12
+ }
13
+
14
+ /* ---------------------------------------------------------
15
+ Hyperbolic sine
16
+ --------------------------------------------------------- */
17
+ float sinh(float x)
18
+ {
19
+ return 0.5 * (exp(x)-exp(-x));
20
+ }
@@ -0,0 +1,31 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+ Compute distance from a point to a line (2d)
8
+
9
+ Parameters:
10
+ -----------
11
+
12
+ p0, p1: Points describing the line
13
+ p: Point to computed distance to
14
+
15
+ Return:
16
+ -------
17
+ Distance of p to (p0,p1)
18
+
19
+ --------------------------------------------------------- */
20
+ float point_to_line_distance(vec2 p0, vec2 p1, vec2 p)
21
+ {
22
+ // Projection p' of p such that p' = p0 + u*(p1-p0)
23
+ vec2 v = p1 - p0;
24
+ float l2 = v.x*v.x + v.y*v.y;
25
+ float u = ((p.x-p0.x)*v.x + (p.y-p0.y)*v.y) / l2;
26
+
27
+ // h is the projection of p on (p0,p1)
28
+ vec2 h = p0 + u*v;
29
+
30
+ return length(p-h);
31
+ }
@@ -0,0 +1,29 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+
8
+ Project a point p onto a line (p0,p1) and return linear position u such that
9
+ p' = p0 + u*(p1-p0)
10
+
11
+ Parameters:
12
+ -----------
13
+
14
+ p0, p1: Points describing the line
15
+ p: Point to be projected
16
+
17
+ Return:
18
+ -------
19
+ Linear position of p onto (p0,p1)
20
+
21
+ --------------------------------------------------------- */
22
+ float point_to_line_projection(vec2 p0, vec2 p1, vec2 p)
23
+ {
24
+ // Projection p' of p such that p' = p0 + u*(p1-p0)
25
+ // Then u *= lenght(p1-p0)
26
+ vec2 v = p1 - p0;
27
+ float l = length(v);
28
+ return ((p.x-p0.x)*v.x + (p.y-p0.y)*v.y) / l;
29
+ }
@@ -0,0 +1,27 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+
8
+ Computes the signed distance from a line
9
+
10
+ Parameters:
11
+ -----------
12
+
13
+ p0, p1: Points describing the line
14
+ p: Point to measure distance from
15
+
16
+ Return:
17
+ -------
18
+ Signed distance
19
+
20
+ --------------------------------------------------------- */
21
+ float line_distance(vec2 p, vec2 p1, vec2 p2) {
22
+ vec2 center = (p1 + p2) * 0.5;
23
+ float len = length(p2 - p1);
24
+ vec2 dir = (p2 - p1) / len;
25
+ vec2 rel_p = p - center;
26
+ return dot(rel_p, vec2(dir.y, -dir.x));
27
+ }
@@ -0,0 +1,30 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Copyright (c) 2014, Nicolas P. Rougier. All Rights Reserved.
3
+ // Distributed under the (new) BSD License.
4
+ // ----------------------------------------------------------------------------
5
+
6
+ /* ---------------------------------------------------------
7
+
8
+ Computes the signed distance from a line segment
9
+
10
+ Parameters:
11
+ -----------
12
+
13
+ p0, p1: Points describing the line segment
14
+ p: Point to measure distance from
15
+
16
+ Return:
17
+ -------
18
+ Signed distance
19
+
20
+ --------------------------------------------------------- */
21
+
22
+ float segment_distance(vec2 p, vec2 p1, vec2 p2) {
23
+ vec2 center = (p1 + p2) * 0.5;
24
+ float len = length(p2 - p1);
25
+ vec2 dir = (p2 - p1) / len;
26
+ vec2 rel_p = p - center;
27
+ float dist1 = abs(dot(rel_p, vec2(dir.y, -dir.x)));
28
+ float dist2 = abs(dot(rel_p, dir)) - 0.5*len;
29
+ return max(dist1, dist2);
30
+ }