File: sensitivity.py

package info (click to toggle)
python-vispy 0.15.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,868 kB
  • sloc: python: 59,799; javascript: 6,800; makefile: 69; sh: 6
file content (49 lines) | stat: -rw-r--r-- 1,396 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# -*- coding: utf-8 -*-
# Copyright (c) Vispy Development Team. All Rights Reserved.
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
# vispy: gallery 2
"""
Zoom Sensitivity
================

For testing zoom sensitivity on various platforms

"""

import numpy as np
import vispy.scene
from vispy.scene import visuals

canvas = vispy.scene.SceneCanvas(keys='interactive', show=True)
vb = canvas.central_widget.add_view()
vb.camera = 'panzoom'
vb.camera.rect = (-10, -10, 20, 20)

centers = np.random.normal(size=(50, 2))
pos = np.random.normal(size=(100000, 2), scale=0.2)
indexes = np.random.normal(size=100000, loc=centers.shape[0]/2., 
                           scale=centers.shape[0]/3.)
indexes = np.clip(indexes, 0, centers.shape[0]-1).astype(int)
scales = 10**(np.linspace(-2, 0.5, centers.shape[0]))[indexes][:, np.newaxis]
pos *= scales
pos += centers[indexes]

scatter = visuals.Markers()
scatter.set_gl_state('translucent', depth_test=False)
scatter.set_data(pos, edge_width=0, face_color=(1, 1, 1, 0.3), size=5)
vb.add(scatter)


@canvas.connect
def on_key_press(ev):
    if ev.key.name in '+=':
        vb.camera.zoom_factor *= 1.1
    elif ev.key.name == '-':
        vb.camera.zoom_factor /= 1.1
    print("Zoom factor: %0.4f" % vb.camera.zoom_factor)


if __name__ == '__main__':
    import sys
    if sys.flags.interactive != 1:
        vispy.app.run()