vispy 0.15.0__cp313-cp313-macosx_10_13_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.
- vispy/__init__.py +33 -0
- vispy/app/__init__.py +15 -0
- vispy/app/_default_app.py +76 -0
- vispy/app/_detect_eventloop.py +148 -0
- vispy/app/application.py +263 -0
- vispy/app/backends/__init__.py +52 -0
- vispy/app/backends/_egl.py +264 -0
- vispy/app/backends/_glfw.py +513 -0
- vispy/app/backends/_jupyter_rfb.py +278 -0
- vispy/app/backends/_offscreen_util.py +121 -0
- vispy/app/backends/_osmesa.py +235 -0
- vispy/app/backends/_pyglet.py +451 -0
- vispy/app/backends/_pyqt4.py +36 -0
- vispy/app/backends/_pyqt5.py +36 -0
- vispy/app/backends/_pyqt6.py +40 -0
- vispy/app/backends/_pyside.py +37 -0
- vispy/app/backends/_pyside2.py +52 -0
- vispy/app/backends/_pyside6.py +53 -0
- vispy/app/backends/_qt.py +1003 -0
- vispy/app/backends/_sdl2.py +444 -0
- vispy/app/backends/_template.py +244 -0
- vispy/app/backends/_test.py +8 -0
- vispy/app/backends/_tk.py +800 -0
- vispy/app/backends/_wx.py +476 -0
- vispy/app/backends/tests/__init__.py +0 -0
- vispy/app/backends/tests/test_offscreen_util.py +52 -0
- vispy/app/backends/tests/test_rfb.py +77 -0
- vispy/app/base.py +294 -0
- vispy/app/canvas.py +828 -0
- vispy/app/qt.py +92 -0
- vispy/app/tests/__init__.py +0 -0
- vispy/app/tests/qt-designer.ui +58 -0
- vispy/app/tests/test_app.py +442 -0
- vispy/app/tests/test_backends.py +164 -0
- vispy/app/tests/test_canvas.py +122 -0
- vispy/app/tests/test_context.py +92 -0
- vispy/app/tests/test_qt.py +47 -0
- vispy/app/tests/test_simultaneous.py +134 -0
- vispy/app/timer.py +174 -0
- vispy/color/__init__.py +17 -0
- vispy/color/_color_dict.py +193 -0
- vispy/color/color_array.py +447 -0
- vispy/color/color_space.py +181 -0
- vispy/color/colormap.py +1213 -0
- vispy/color/tests/__init__.py +0 -0
- vispy/color/tests/test_color.py +378 -0
- vispy/conftest.py +12 -0
- vispy/ext/__init__.py +0 -0
- vispy/ext/cocoapy.py +1522 -0
- vispy/ext/cubehelix.py +138 -0
- vispy/ext/egl.py +375 -0
- vispy/ext/fontconfig.py +118 -0
- vispy/ext/gdi32plus.py +206 -0
- vispy/ext/osmesa.py +105 -0
- vispy/geometry/__init__.py +23 -0
- vispy/geometry/_triangulation_debugger.py +171 -0
- vispy/geometry/calculations.py +162 -0
- vispy/geometry/curves.py +399 -0
- vispy/geometry/generation.py +643 -0
- vispy/geometry/isocurve.py +175 -0
- vispy/geometry/isosurface.py +465 -0
- vispy/geometry/meshdata.py +700 -0
- vispy/geometry/normals.py +78 -0
- vispy/geometry/parametric.py +56 -0
- vispy/geometry/polygon.py +137 -0
- vispy/geometry/rect.py +210 -0
- vispy/geometry/tests/__init__.py +0 -0
- vispy/geometry/tests/test_calculations.py +23 -0
- vispy/geometry/tests/test_generation.py +56 -0
- vispy/geometry/tests/test_meshdata.py +106 -0
- vispy/geometry/tests/test_triangulation.py +594 -0
- vispy/geometry/torusknot.py +142 -0
- vispy/geometry/triangulation.py +876 -0
- vispy/gloo/__init__.py +56 -0
- vispy/gloo/buffer.py +505 -0
- vispy/gloo/context.py +272 -0
- vispy/gloo/framebuffer.py +257 -0
- vispy/gloo/gl/__init__.py +234 -0
- vispy/gloo/gl/_constants.py +332 -0
- vispy/gloo/gl/_es2.py +986 -0
- vispy/gloo/gl/_gl2.py +1365 -0
- vispy/gloo/gl/_proxy.py +499 -0
- vispy/gloo/gl/_pyopengl2.py +362 -0
- vispy/gloo/gl/dummy.py +24 -0
- vispy/gloo/gl/es2.py +62 -0
- vispy/gloo/gl/gl2.py +98 -0
- vispy/gloo/gl/glplus.py +168 -0
- vispy/gloo/gl/pyopengl2.py +97 -0
- vispy/gloo/gl/tests/__init__.py +0 -0
- vispy/gloo/gl/tests/test_basics.py +282 -0
- vispy/gloo/gl/tests/test_functionality.py +568 -0
- vispy/gloo/gl/tests/test_names.py +246 -0
- vispy/gloo/gl/tests/test_use.py +71 -0
- vispy/gloo/glir.py +1824 -0
- vispy/gloo/globject.py +101 -0
- vispy/gloo/preprocessor.py +67 -0
- vispy/gloo/program.py +543 -0
- vispy/gloo/tests/__init__.py +0 -0
- vispy/gloo/tests/test_buffer.py +558 -0
- vispy/gloo/tests/test_context.py +119 -0
- vispy/gloo/tests/test_framebuffer.py +195 -0
- vispy/gloo/tests/test_glir.py +307 -0
- vispy/gloo/tests/test_globject.py +35 -0
- vispy/gloo/tests/test_program.py +302 -0
- vispy/gloo/tests/test_texture.py +732 -0
- vispy/gloo/tests/test_use_gloo.py +187 -0
- vispy/gloo/tests/test_util.py +60 -0
- vispy/gloo/tests/test_wrappers.py +261 -0
- vispy/gloo/texture.py +1046 -0
- vispy/gloo/util.py +129 -0
- vispy/gloo/wrappers.py +762 -0
- vispy/glsl/__init__.py +42 -0
- vispy/glsl/antialias/antialias.glsl +7 -0
- vispy/glsl/antialias/cap-butt.glsl +31 -0
- vispy/glsl/antialias/cap-round.glsl +29 -0
- vispy/glsl/antialias/cap-square.glsl +30 -0
- vispy/glsl/antialias/cap-triangle-in.glsl +30 -0
- vispy/glsl/antialias/cap-triangle-out.glsl +30 -0
- vispy/glsl/antialias/cap.glsl +67 -0
- vispy/glsl/antialias/caps.glsl +67 -0
- vispy/glsl/antialias/filled.glsl +50 -0
- vispy/glsl/antialias/outline.glsl +40 -0
- vispy/glsl/antialias/stroke.glsl +43 -0
- vispy/glsl/arrowheads/angle.glsl +99 -0
- vispy/glsl/arrowheads/arrowheads.frag +60 -0
- vispy/glsl/arrowheads/arrowheads.glsl +12 -0
- vispy/glsl/arrowheads/arrowheads.vert +83 -0
- vispy/glsl/arrowheads/curved.glsl +48 -0
- vispy/glsl/arrowheads/inhibitor.glsl +26 -0
- vispy/glsl/arrowheads/stealth.glsl +46 -0
- vispy/glsl/arrowheads/triangle.glsl +97 -0
- vispy/glsl/arrowheads/util.glsl +13 -0
- vispy/glsl/arrows/angle-30.glsl +12 -0
- vispy/glsl/arrows/angle-60.glsl +12 -0
- vispy/glsl/arrows/angle-90.glsl +12 -0
- vispy/glsl/arrows/arrow.frag +39 -0
- vispy/glsl/arrows/arrow.vert +49 -0
- vispy/glsl/arrows/arrows.glsl +17 -0
- vispy/glsl/arrows/common.glsl +187 -0
- vispy/glsl/arrows/curved.glsl +63 -0
- vispy/glsl/arrows/stealth.glsl +50 -0
- vispy/glsl/arrows/triangle-30.glsl +12 -0
- vispy/glsl/arrows/triangle-60.glsl +12 -0
- vispy/glsl/arrows/triangle-90.glsl +12 -0
- vispy/glsl/arrows/util.glsl +98 -0
- vispy/glsl/build_spatial_filters.py +660 -0
- vispy/glsl/collections/agg-fast-path.frag +20 -0
- vispy/glsl/collections/agg-fast-path.vert +78 -0
- vispy/glsl/collections/agg-glyph.frag +60 -0
- vispy/glsl/collections/agg-glyph.vert +33 -0
- vispy/glsl/collections/agg-marker.frag +35 -0
- vispy/glsl/collections/agg-marker.vert +48 -0
- vispy/glsl/collections/agg-path.frag +55 -0
- vispy/glsl/collections/agg-path.vert +166 -0
- vispy/glsl/collections/agg-point.frag +21 -0
- vispy/glsl/collections/agg-point.vert +35 -0
- vispy/glsl/collections/agg-segment.frag +32 -0
- vispy/glsl/collections/agg-segment.vert +75 -0
- vispy/glsl/collections/marker.frag +38 -0
- vispy/glsl/collections/marker.vert +48 -0
- vispy/glsl/collections/raw-path.frag +15 -0
- vispy/glsl/collections/raw-path.vert +24 -0
- vispy/glsl/collections/raw-point.frag +14 -0
- vispy/glsl/collections/raw-point.vert +31 -0
- vispy/glsl/collections/raw-segment.frag +18 -0
- vispy/glsl/collections/raw-segment.vert +26 -0
- vispy/glsl/collections/raw-triangle.frag +13 -0
- vispy/glsl/collections/raw-triangle.vert +26 -0
- vispy/glsl/collections/sdf-glyph-ticks.vert +69 -0
- vispy/glsl/collections/sdf-glyph.frag +80 -0
- vispy/glsl/collections/sdf-glyph.vert +59 -0
- vispy/glsl/collections/tick-labels.vert +71 -0
- vispy/glsl/colormaps/autumn.glsl +20 -0
- vispy/glsl/colormaps/blues.glsl +20 -0
- vispy/glsl/colormaps/color-space.glsl +17 -0
- vispy/glsl/colormaps/colormaps.glsl +24 -0
- vispy/glsl/colormaps/cool.glsl +20 -0
- vispy/glsl/colormaps/fire.glsl +21 -0
- vispy/glsl/colormaps/gray.glsl +20 -0
- vispy/glsl/colormaps/greens.glsl +20 -0
- vispy/glsl/colormaps/hot.glsl +22 -0
- vispy/glsl/colormaps/ice.glsl +20 -0
- vispy/glsl/colormaps/icefire.glsl +23 -0
- vispy/glsl/colormaps/parse.py +40 -0
- vispy/glsl/colormaps/reds.glsl +20 -0
- vispy/glsl/colormaps/spring.glsl +20 -0
- vispy/glsl/colormaps/summer.glsl +20 -0
- vispy/glsl/colormaps/user.glsl +22 -0
- vispy/glsl/colormaps/util.glsl +41 -0
- vispy/glsl/colormaps/wheel.glsl +21 -0
- vispy/glsl/colormaps/winter.glsl +20 -0
- vispy/glsl/lines/agg.frag +320 -0
- vispy/glsl/lines/agg.vert +241 -0
- vispy/glsl/markers/arrow.glsl +12 -0
- vispy/glsl/markers/asterisk.glsl +16 -0
- vispy/glsl/markers/chevron.glsl +14 -0
- vispy/glsl/markers/clover.glsl +20 -0
- vispy/glsl/markers/club.glsl +31 -0
- vispy/glsl/markers/cross.glsl +17 -0
- vispy/glsl/markers/diamond.glsl +12 -0
- vispy/glsl/markers/disc.glsl +9 -0
- vispy/glsl/markers/ellipse.glsl +67 -0
- vispy/glsl/markers/hbar.glsl +9 -0
- vispy/glsl/markers/heart.glsl +15 -0
- vispy/glsl/markers/infinity.glsl +15 -0
- vispy/glsl/markers/marker-sdf.frag +74 -0
- vispy/glsl/markers/marker-sdf.vert +41 -0
- vispy/glsl/markers/marker.frag +36 -0
- vispy/glsl/markers/marker.vert +46 -0
- vispy/glsl/markers/markers.glsl +24 -0
- vispy/glsl/markers/pin.glsl +18 -0
- vispy/glsl/markers/ring.glsl +11 -0
- vispy/glsl/markers/spade.glsl +28 -0
- vispy/glsl/markers/square.glsl +10 -0
- vispy/glsl/markers/tag.glsl +11 -0
- vispy/glsl/markers/triangle.glsl +14 -0
- vispy/glsl/markers/vbar.glsl +9 -0
- vispy/glsl/math/circle-through-2-points.glsl +30 -0
- vispy/glsl/math/constants.glsl +48 -0
- vispy/glsl/math/double.glsl +114 -0
- vispy/glsl/math/functions.glsl +20 -0
- vispy/glsl/math/point-to-line-distance.glsl +31 -0
- vispy/glsl/math/point-to-line-projection.glsl +29 -0
- vispy/glsl/math/signed-line-distance.glsl +27 -0
- vispy/glsl/math/signed-segment-distance.glsl +30 -0
- vispy/glsl/misc/regular-grid.frag +244 -0
- vispy/glsl/misc/spatial-filters.frag +1407 -0
- vispy/glsl/misc/viewport-NDC.glsl +20 -0
- vispy/glsl/transforms/azimuthal-equal-area.glsl +32 -0
- vispy/glsl/transforms/azimuthal-equidistant.glsl +38 -0
- vispy/glsl/transforms/hammer.glsl +44 -0
- vispy/glsl/transforms/identity.glsl +6 -0
- vispy/glsl/transforms/identity_forward.glsl +23 -0
- vispy/glsl/transforms/identity_inverse.glsl +23 -0
- vispy/glsl/transforms/linear-scale.glsl +127 -0
- vispy/glsl/transforms/log-scale.glsl +126 -0
- vispy/glsl/transforms/mercator-transverse-forward.glsl +40 -0
- vispy/glsl/transforms/mercator-transverse-inverse.glsl +40 -0
- vispy/glsl/transforms/panzoom.glsl +10 -0
- vispy/glsl/transforms/polar.glsl +41 -0
- vispy/glsl/transforms/position.glsl +44 -0
- vispy/glsl/transforms/power-scale.glsl +139 -0
- vispy/glsl/transforms/projection.glsl +7 -0
- vispy/glsl/transforms/pvm.glsl +13 -0
- vispy/glsl/transforms/rotate.glsl +45 -0
- vispy/glsl/transforms/trackball.glsl +15 -0
- vispy/glsl/transforms/translate.glsl +35 -0
- vispy/glsl/transforms/transverse_mercator.glsl +38 -0
- vispy/glsl/transforms/viewport-clipping.glsl +14 -0
- vispy/glsl/transforms/viewport-transform.glsl +16 -0
- vispy/glsl/transforms/viewport.glsl +50 -0
- vispy/glsl/transforms/x.glsl +24 -0
- vispy/glsl/transforms/y.glsl +19 -0
- vispy/glsl/transforms/z.glsl +14 -0
- vispy/io/__init__.py +20 -0
- vispy/io/_data/spatial-filters.npy +0 -0
- vispy/io/datasets.py +94 -0
- vispy/io/image.py +231 -0
- vispy/io/mesh.py +122 -0
- vispy/io/stl.py +167 -0
- vispy/io/tests/__init__.py +0 -0
- vispy/io/tests/test_image.py +47 -0
- vispy/io/tests/test_io.py +121 -0
- vispy/io/wavefront.py +350 -0
- vispy/plot/__init__.py +36 -0
- vispy/plot/fig.py +58 -0
- vispy/plot/plotwidget.py +522 -0
- vispy/plot/tests/__init__.py +0 -0
- vispy/plot/tests/test_plot.py +46 -0
- vispy/scene/__init__.py +43 -0
- vispy/scene/cameras/__init__.py +27 -0
- vispy/scene/cameras/_base.py +38 -0
- vispy/scene/cameras/arcball.py +105 -0
- vispy/scene/cameras/base_camera.py +551 -0
- vispy/scene/cameras/fly.py +474 -0
- vispy/scene/cameras/magnify.py +163 -0
- vispy/scene/cameras/panzoom.py +311 -0
- vispy/scene/cameras/perspective.py +338 -0
- vispy/scene/cameras/tests/__init__.py +0 -0
- vispy/scene/cameras/tests/test_cameras.py +27 -0
- vispy/scene/cameras/tests/test_link.py +53 -0
- vispy/scene/cameras/tests/test_perspective.py +122 -0
- vispy/scene/cameras/turntable.py +183 -0
- vispy/scene/canvas.py +639 -0
- vispy/scene/events.py +85 -0
- vispy/scene/node.py +644 -0
- vispy/scene/subscene.py +20 -0
- vispy/scene/tests/__init__.py +0 -0
- vispy/scene/tests/test_canvas.py +119 -0
- vispy/scene/tests/test_node.py +142 -0
- vispy/scene/tests/test_visuals.py +141 -0
- vispy/scene/visuals.py +276 -0
- vispy/scene/widgets/__init__.py +18 -0
- vispy/scene/widgets/anchor.py +25 -0
- vispy/scene/widgets/axis.py +88 -0
- vispy/scene/widgets/colorbar.py +176 -0
- vispy/scene/widgets/console.py +351 -0
- vispy/scene/widgets/grid.py +509 -0
- vispy/scene/widgets/label.py +50 -0
- vispy/scene/widgets/tests/__init__.py +0 -0
- vispy/scene/widgets/tests/test_colorbar.py +47 -0
- vispy/scene/widgets/viewbox.py +199 -0
- vispy/scene/widgets/widget.py +478 -0
- vispy/testing/__init__.py +51 -0
- vispy/testing/_runners.py +448 -0
- vispy/testing/_testing.py +416 -0
- vispy/testing/image_tester.py +494 -0
- vispy/testing/rendered_array_tester.py +85 -0
- vispy/testing/tests/__init__.py +0 -0
- vispy/testing/tests/test_testing.py +20 -0
- vispy/util/__init__.py +32 -0
- vispy/util/bunch.py +15 -0
- vispy/util/check_environment.py +57 -0
- vispy/util/config.py +490 -0
- vispy/util/dpi/__init__.py +19 -0
- vispy/util/dpi/_linux.py +69 -0
- vispy/util/dpi/_quartz.py +26 -0
- vispy/util/dpi/_win32.py +34 -0
- vispy/util/dpi/tests/__init__.py +0 -0
- vispy/util/dpi/tests/test_dpi.py +16 -0
- vispy/util/eq.py +41 -0
- vispy/util/event.py +774 -0
- vispy/util/fetching.py +276 -0
- vispy/util/filter.py +44 -0
- vispy/util/fonts/__init__.py +14 -0
- vispy/util/fonts/_freetype.py +73 -0
- vispy/util/fonts/_quartz.py +192 -0
- vispy/util/fonts/_triage.py +36 -0
- vispy/util/fonts/_vispy_fonts.py +20 -0
- vispy/util/fonts/_win32.py +105 -0
- vispy/util/fonts/data/OpenSans-Bold.ttf +0 -0
- vispy/util/fonts/data/OpenSans-BoldItalic.ttf +0 -0
- vispy/util/fonts/data/OpenSans-Italic.ttf +0 -0
- vispy/util/fonts/data/OpenSans-Regular.ttf +0 -0
- vispy/util/fonts/tests/__init__.py +0 -0
- vispy/util/fonts/tests/test_font.py +45 -0
- vispy/util/fourier.py +69 -0
- vispy/util/frozen.py +25 -0
- vispy/util/gallery_scraper.py +268 -0
- vispy/util/keys.py +91 -0
- vispy/util/logs.py +358 -0
- vispy/util/osmesa_gl.py +17 -0
- vispy/util/profiler.py +135 -0
- vispy/util/ptime.py +16 -0
- vispy/util/quaternion.py +229 -0
- vispy/util/svg/__init__.py +18 -0
- vispy/util/svg/base.py +20 -0
- vispy/util/svg/color.py +219 -0
- vispy/util/svg/element.py +51 -0
- vispy/util/svg/geometry.py +478 -0
- vispy/util/svg/group.py +66 -0
- vispy/util/svg/length.py +81 -0
- vispy/util/svg/number.py +25 -0
- vispy/util/svg/path.py +332 -0
- vispy/util/svg/shapes.py +57 -0
- vispy/util/svg/style.py +59 -0
- vispy/util/svg/svg.py +40 -0
- vispy/util/svg/transform.py +223 -0
- vispy/util/svg/transformable.py +28 -0
- vispy/util/svg/viewport.py +73 -0
- vispy/util/tests/__init__.py +0 -0
- vispy/util/tests/test_config.py +58 -0
- vispy/util/tests/test_docstring_parameters.py +123 -0
- vispy/util/tests/test_emitter_group.py +262 -0
- vispy/util/tests/test_event_emitter.py +743 -0
- vispy/util/tests/test_fourier.py +35 -0
- vispy/util/tests/test_gallery_scraper.py +112 -0
- vispy/util/tests/test_import.py +127 -0
- vispy/util/tests/test_key.py +22 -0
- vispy/util/tests/test_logging.py +45 -0
- vispy/util/tests/test_run.py +14 -0
- vispy/util/tests/test_transforms.py +42 -0
- vispy/util/tests/test_vispy.py +48 -0
- vispy/util/transforms.py +201 -0
- vispy/util/wrappers.py +155 -0
- vispy/version.py +21 -0
- vispy/visuals/__init__.py +50 -0
- vispy/visuals/_scalable_textures.py +487 -0
- vispy/visuals/axis.py +678 -0
- vispy/visuals/border.py +208 -0
- vispy/visuals/box.py +79 -0
- vispy/visuals/collections/__init__.py +30 -0
- vispy/visuals/collections/agg_fast_path_collection.py +219 -0
- vispy/visuals/collections/agg_path_collection.py +197 -0
- vispy/visuals/collections/agg_point_collection.py +52 -0
- vispy/visuals/collections/agg_segment_collection.py +142 -0
- vispy/visuals/collections/array_list.py +401 -0
- vispy/visuals/collections/base_collection.py +482 -0
- vispy/visuals/collections/collection.py +253 -0
- vispy/visuals/collections/path_collection.py +23 -0
- vispy/visuals/collections/point_collection.py +19 -0
- vispy/visuals/collections/polygon_collection.py +25 -0
- vispy/visuals/collections/raw_path_collection.py +119 -0
- vispy/visuals/collections/raw_point_collection.py +113 -0
- vispy/visuals/collections/raw_polygon_collection.py +77 -0
- vispy/visuals/collections/raw_segment_collection.py +112 -0
- vispy/visuals/collections/raw_triangle_collection.py +78 -0
- vispy/visuals/collections/segment_collection.py +19 -0
- vispy/visuals/collections/triangle_collection.py +16 -0
- vispy/visuals/collections/util.py +168 -0
- vispy/visuals/colorbar.py +699 -0
- vispy/visuals/cube.py +41 -0
- vispy/visuals/ellipse.py +162 -0
- vispy/visuals/filters/__init__.py +10 -0
- vispy/visuals/filters/base_filter.py +242 -0
- vispy/visuals/filters/clipper.py +60 -0
- vispy/visuals/filters/clipping_planes.py +122 -0
- vispy/visuals/filters/color.py +181 -0
- vispy/visuals/filters/markers.py +28 -0
- vispy/visuals/filters/mesh.py +801 -0
- vispy/visuals/filters/picking.py +60 -0
- vispy/visuals/filters/tests/__init__.py +3 -0
- vispy/visuals/filters/tests/test_primitive_picking_filters.py +70 -0
- vispy/visuals/filters/tests/test_wireframe_filter.py +16 -0
- vispy/visuals/glsl/__init__.py +1 -0
- vispy/visuals/glsl/antialiasing.py +133 -0
- vispy/visuals/glsl/color.py +63 -0
- vispy/visuals/graphs/__init__.py +1 -0
- vispy/visuals/graphs/graph.py +240 -0
- vispy/visuals/graphs/layouts/__init__.py +55 -0
- vispy/visuals/graphs/layouts/circular.py +49 -0
- vispy/visuals/graphs/layouts/force_directed.py +211 -0
- vispy/visuals/graphs/layouts/networkx_layout.py +87 -0
- vispy/visuals/graphs/layouts/random.py +52 -0
- vispy/visuals/graphs/tests/__init__.py +1 -0
- vispy/visuals/graphs/tests/test_layouts.py +139 -0
- vispy/visuals/graphs/tests/test_networkx_layout.py +47 -0
- vispy/visuals/graphs/util.py +120 -0
- vispy/visuals/gridlines.py +161 -0
- vispy/visuals/gridmesh.py +98 -0
- vispy/visuals/histogram.py +58 -0
- vispy/visuals/image.py +701 -0
- vispy/visuals/image_complex.py +130 -0
- vispy/visuals/infinite_line.py +199 -0
- vispy/visuals/instanced_mesh.py +152 -0
- vispy/visuals/isocurve.py +213 -0
- vispy/visuals/isoline.py +241 -0
- vispy/visuals/isosurface.py +113 -0
- vispy/visuals/line/__init__.py +6 -0
- vispy/visuals/line/arrow.py +289 -0
- vispy/visuals/line/dash_atlas.py +90 -0
- vispy/visuals/line/line.py +545 -0
- vispy/visuals/line_plot.py +135 -0
- vispy/visuals/linear_region.py +199 -0
- vispy/visuals/markers.py +819 -0
- vispy/visuals/mesh.py +373 -0
- vispy/visuals/mesh_normals.py +159 -0
- vispy/visuals/plane.py +54 -0
- vispy/visuals/polygon.py +145 -0
- vispy/visuals/rectangle.py +196 -0
- vispy/visuals/regular_polygon.py +56 -0
- vispy/visuals/scrolling_lines.py +197 -0
- vispy/visuals/shaders/__init__.py +17 -0
- vispy/visuals/shaders/compiler.py +206 -0
- vispy/visuals/shaders/expression.py +99 -0
- vispy/visuals/shaders/function.py +788 -0
- vispy/visuals/shaders/multiprogram.py +145 -0
- vispy/visuals/shaders/parsing.py +140 -0
- vispy/visuals/shaders/program.py +161 -0
- vispy/visuals/shaders/shader_object.py +162 -0
- vispy/visuals/shaders/tests/__init__.py +0 -0
- vispy/visuals/shaders/tests/test_function.py +486 -0
- vispy/visuals/shaders/tests/test_multiprogram.py +78 -0
- vispy/visuals/shaders/tests/test_parsing.py +57 -0
- vispy/visuals/shaders/variable.py +272 -0
- vispy/visuals/spectrogram.py +169 -0
- vispy/visuals/sphere.py +80 -0
- vispy/visuals/surface_plot.py +192 -0
- vispy/visuals/tests/__init__.py +0 -0
- vispy/visuals/tests/test_arrows.py +109 -0
- vispy/visuals/tests/test_axis.py +120 -0
- vispy/visuals/tests/test_collections.py +15 -0
- vispy/visuals/tests/test_colorbar.py +179 -0
- vispy/visuals/tests/test_colormap.py +97 -0
- vispy/visuals/tests/test_ellipse.py +122 -0
- vispy/visuals/tests/test_gridlines.py +30 -0
- vispy/visuals/tests/test_histogram.py +24 -0
- vispy/visuals/tests/test_image.py +392 -0
- vispy/visuals/tests/test_image_complex.py +36 -0
- vispy/visuals/tests/test_infinite_line.py +53 -0
- vispy/visuals/tests/test_instanced_mesh.py +50 -0
- vispy/visuals/tests/test_isosurface.py +22 -0
- vispy/visuals/tests/test_linear_region.py +152 -0
- vispy/visuals/tests/test_markers.py +54 -0
- vispy/visuals/tests/test_mesh.py +261 -0
- vispy/visuals/tests/test_mesh_normals.py +218 -0
- vispy/visuals/tests/test_polygon.py +112 -0
- vispy/visuals/tests/test_rectangle.py +163 -0
- vispy/visuals/tests/test_regular_polygon.py +111 -0
- vispy/visuals/tests/test_scalable_textures.py +196 -0
- vispy/visuals/tests/test_sdf.py +73 -0
- vispy/visuals/tests/test_spectrogram.py +42 -0
- vispy/visuals/tests/test_surface_plot.py +57 -0
- vispy/visuals/tests/test_text.py +95 -0
- vispy/visuals/tests/test_volume.py +542 -0
- vispy/visuals/tests/test_windbarb.py +33 -0
- vispy/visuals/text/__init__.py +7 -0
- vispy/visuals/text/_sdf_cpu.cpython-313-darwin.so +0 -0
- vispy/visuals/text/_sdf_cpu.pyx +112 -0
- vispy/visuals/text/_sdf_gpu.py +316 -0
- vispy/visuals/text/text.py +675 -0
- vispy/visuals/transforms/__init__.py +34 -0
- vispy/visuals/transforms/_util.py +191 -0
- vispy/visuals/transforms/base_transform.py +233 -0
- vispy/visuals/transforms/chain.py +300 -0
- vispy/visuals/transforms/interactive.py +98 -0
- vispy/visuals/transforms/linear.py +564 -0
- vispy/visuals/transforms/nonlinear.py +398 -0
- vispy/visuals/transforms/tests/__init__.py +0 -0
- vispy/visuals/transforms/tests/test_transforms.py +243 -0
- vispy/visuals/transforms/transform_system.py +339 -0
- vispy/visuals/tube.py +173 -0
- vispy/visuals/visual.py +923 -0
- vispy/visuals/volume.py +1366 -0
- vispy/visuals/windbarb.py +291 -0
- vispy/visuals/xyz_axis.py +34 -0
- vispy-0.15.0.dist-info/METADATA +243 -0
- vispy-0.15.0.dist-info/RECORD +521 -0
- vispy-0.15.0.dist-info/WHEEL +6 -0
- vispy-0.15.0.dist-info/licenses/LICENSE.txt +36 -0
- 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
|
+
}
|