123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- ## This contains the script snippets that come with the documetation for testing
- import numpy as np
- from vedo import *
- from vedo.pyplot import plot
- import vedo
- doshow = 1
- ##################################################################### addons.py
- box = Box(pos=(1,2,3), length=8, width=9, height=7).alpha(0.1)
- axs = Axes(box, c='k') # returns Assembly object
- for a in axs.unpack():
- print(a.name)
- if doshow:
- show(box, axs).close()
- ######################################################
- print("Test 1")
- b = Box(pos=(0, 0, 0), length=80, width=90, height=70).alpha(0.1)
- if doshow:
- show(
- b,
- axes={
- "xtitle": "Some long variable [a.u.]",
- "number_of_divisions": 4,
- # ...
- },
- ).close()
- ##################################################################### base.py
- print("Test 2")
- c1 = Cube()
- c2 = c1.clone().c('violet').alpha(0.5) # copy of c1
- v = vector(0.2,1,0)
- p = vector(1,0,0) # axis passes through this point
- c2.rotate(90, axis=v, point=p)
- l = Line(-v+p, v+p).lw(3).c('red')
- if doshow:
- show(c1, l, c2, axes=1).close()
- ######################################################
- print("Test 3")
- objs = []
- for i in range(-5, 5):
- p = [i/3, i/2, i]
- v = vector(i/10, i/20, 1)
- c = Circle(r=i/5+1.2).pos(p).lw(3)
- objs += [c, Arrow(p,p+v)]
- if doshow:
- show(objs, axes=1).close()
- ######################################################
- print("Test 4")
- c1 = Cube()
- c2 = c1.clone().c('violet').alpha(0.5) # copy of c1
- v = vector(0.2,1,0)
- p = vector(1,0,0) # axis passes through this point
- c2.rotate(90, axis=v, point=p)
- # get the inverse of the current transformation
- T = c2.transform.compute_inverse()
- c2.apply_transform(T) # put back c2 in place
- l = Line(p-v, p+v).lw(3).c('red')
- if doshow:
- show(c1.wireframe().lw(3), l, c2, axes=1).close()
- ######################################################
- print("Test 5")
- tetmesh = TetMesh(dataurl+'limb_ugrid.vtk')
- tetmesh.color('rainbow')
- cu = Cube(side=500).x(500) # any Mesh works
- tetmesh.cut_with_box(cu)
- if doshow:
- show(axes=1).close()
- ##################################################################### mesh.py
- print("Test 6")
- s = Sphere().crop(right=0.3, left=0.1)
- if doshow:
- show(s).close()
- ######################################################
- print("Test 7")
- c1 = Cylinder(pos=(0,0,0), r=2, height=3, axis=(1,.0,0), alpha=.1).triangulate()
- c2 = Cylinder(pos=(0,0,2), r=1, height=2, axis=(0,.3,1), alpha=.1).triangulate()
- intersect = c1.intersect_with(c2).join(reset=True)
- spline = Spline(intersect).c('blue').lw(5)
- if doshow:
- show(c1, c2, spline, intersect.labels('id'), axes=1).close()
- ######################################################
- print("Test 8")
- grid = Grid()#.triangulate()
- circle = Circle(r=0.3, res=24).pos(0.11,0.12)
- line = Line(circle, closed=True, lw=4, c='r4')
- # grid.imprint(line)
- if doshow:
- show(grid, line, axes=1).close()
- ##################################################################### Image.py
- print("Test 9")
- if doshow:
- pic = Image(dataurl+'dog.jpg').pad()
- pic.append([pic,pic,pic], axis='y')
- pic.append([pic,pic,pic,pic], axis='x')
- pic.show(axes=1).close()
- ######################################################
- print("Test 10")
- if doshow:
- p = vedo.Image(vedo.dataurl+'images/dog.jpg').bw()
- pe = p.clone().enhance()
- show(p, pe, N=2, mode='image', zoom='tight').close()
- ######################################################
- print("Test 11")
- if doshow:
- pic1 = Image("https://aws.glamour.es/prod/designs/v1/assets/620x459/547577.jpg")
- pic2 = pic1.clone().invert()
- pic3 = pic1.clone().binarize()
- show(pic1, pic2, pic3, N=3, bg="blue9").close()
- ######################################################
- print("Test 12")
- if doshow:
- pic = vedo.Image(vedo.dataurl+"images/dog.jpg")
- pic.add_rectangle([100,300], [100,200], c='green4', alpha=0.7)
- pic.add_line([100,100],[400,500], lw=2, alpha=1)
- pic.add_triangle([250,300], [100,300], [200,400])
- show(pic, axes=1).close()
- ##################################################################### plotter.py
- print("Test 13")
- cone = Cone()
- if doshow:
- cone.show(axes=1).fly_to([1,0,0])
- cone.show().close()
- ######################################################
- print("Test 14")
- settings.use_parallel_projection = True # or else it doesnt make sense!
- cube = Cube().alpha(0.2)
- plt = Plotter(size=(900,600), axes=dict(xtitle='x (um)'))
- if doshow:
- plt.add_scale_indicator(units='um', c='blue4')
- plt.show(cube, "Scale indicator with units").close()
- settings.use_parallel_projection = False
- ######################################################
- print("Test 15")
- def func(evt): # called every time the mouse moves
- # evt is a dotted dictionary
- if not evt.actor:
- return # no hit, return
- print("point coords =", evt.picked3d)
- elli = Ellipsoid()
- plt = Plotter(axes=1)
- plt.add_callback('mouse hovering', func)
- if doshow:
- plt.show(elli).close()
- ##################################################################### pointcloud.py
- # print("Test 16")
- # s = Ellipsoid().rotate_y(30)
- # #Camera options: pos, focal_point, viewup, distance,
- # # clippingRange, parallelScale, thickness, viewAngle
- # camopts = dict(pos=(0,0,25), focal_point=(0,0,0))
- # if doshow:
- # show(s, camera=camopts, offscreen=True).close()
- # m = s.visible_points()
- # #print('visible pts:', m.points()) # numpy array
- # show(m, new=True, axes=1).close() # optionally draw result on a new window
- ######################################################
- print("Test 17")
- def fibonacci_sphere(n):
- s = np.linspace(0, n, num=n, endpoint=False)
- theta = s * 2.399963229728653
- y = 1 - s * (2/(n-1))
- r = np.sqrt(1 - y * y)
- x = np.cos(theta) * r
- z = np.sin(theta) * r
- return [x,y,z]
- # print(np.c_[fibonacci_sphere(10)].T)
- fpoints = Points(np.c_[fibonacci_sphere(1000)].T)
- if doshow:
- fpoints.show(axes=1).close()
- ######################################################
- print("Test 18")
- s = Sphere(res=10).linewidth(1).c("orange").compute_normals()
- point_ids = s.labels('id', on="points").c('green')
- cell_ids = s.labels('id', on="cells").c('black')
- if doshow:
- show(s, point_ids, cell_ids).close()
- ######################################################
- print("Test 19")
- sph = Sphere(quads=True, res=4).compute_normals().wireframe()
- sph.celldata["zvals"] = sph.cell_centers().coordinates[:,2]
- l2d = sph.labels("zvals", on="cells", precision=2).backcolor('orange9')
- if doshow:
- show(sph, l2d, axes=1).close()
- ######################################################
- print("Test 20")
- c1 = Cube().rotate_z(5).x(2).y(1)
- print("cube1 position", c1.pos())
- T = c1.transform # rotate by 5 degrees, sum 2 to x and 1 to y
- c2 = Cube().c('r4')
- c2.apply_transform(T)
- c2.apply_transform(T)
- c2.apply_transform(T)
- print("cube2 position", c2.pos())
- if doshow:
- show(c1, c2, axes=1).close()
- ######################################################
- print("Test 21")
- disc = Disc(r1=1, r2=1.2)
- mesh = disc.extrude(3, res=50).linewidth(1)
- mesh.cut_with_cylinder([0,0,2], r=0.4, axis='y', invert=True)
- if doshow:
- show(mesh, axes=1)
- ######################################################
- print("Test 22")
- disc = Disc(r1=1, r2=1.2)
- mesh = disc.extrude(3, res=50).linewidth(1)
- mesh.cut_with_sphere([1,-0.7,2], r=1.5, invert=True)
- if doshow:
- show(mesh, axes=1).close()
- ######################################################
- print("Test 23")
- arr = np.random.randn(100000, 3)/2
- pts = Points(arr).c('red3').pos(5,0,0)
- cube = Cube().pos(4,0.5,0)
- assem = pts.cut_with_mesh(cube, keep=True)
- if doshow:
- show(assem.unpack(), axes=1).close()
- ##################################################################### shapes.py
- print("Test 24")
- pts = [[1, 0, 0], [5, 2, 0], [3, 3, 1]]
- ln = Line(pts, c='r', lw=5).pattern('- -', repeats=10)
- if doshow:
- ln.show(axes=1).close()
- ######################################################
- print("Test 25")
- if doshow:
- shape = Assembly(dataurl+"timecourse1d.npy")[58]
- pts = shape.rotate_x(30).coordinates
- tangents = Line(pts).tangents()
- arrs = Arrows(pts, pts+tangents, c='blue9')
- show(shape.c('red5').lw(5), arrs, bg='bb', axes=1).close()
- ######################################################
- print("Test 26")
- if doshow:
- shape = Assembly(dataurl+"timecourse1d.npy")[55]
- curvs = Line(shape.coordinates).curvature()
- shape.cmap('coolwarm', curvs, vmin=-2,vmax=2).add_scalarbar3d(c='w')
- shape.render_lines_as_tubes().lw(12)
- pp = plot(curvs, ac='white', lc='yellow5')
- show(shape, pp, N=2, bg='bb', sharecam=False).close()
- ######################################################
- print("Test 27")
- aline = Line([(0,0,0),(1,3,0),(2,4,0)])
- surf1 = aline.sweep((1,0.2,0), res=3)
- surf2 = aline.sweep((0.2,0,1))
- aline.color('r').linewidth(4)
- if doshow:
- show(surf1, surf2, aline, axes=1).close()
- ######################################################
- print("Test 28")
- pts = [(-4,-3),(1,1),(2,4),(4,1),(3,-1),(2,-5),(9,-3)]
- ln = Line(pts, c='r', lw=2).z(0.01)
- rl = RoundedLine(pts, 0.6)
- if doshow:
- show(Points(pts), ln, rl, axes=1).close()
- ######################################################
- print("Test 29")
- pts = np.random.randn(25,3)
- for i,p in enumerate(pts):
- p += [5*i, 15*sin(i/2), i*i*i/200]
- if doshow:
- show(Points(pts), Bezier(pts), axes=1).close()
- ######################################################
- print("Test 30")
- xcoords = np.arange(0, 2, 0.2)
- ycoords = np.arange(0, 1, 0.2)
- sqrtx = sqrt(xcoords)
- grid = Grid(s=(sqrtx, ycoords))
- if doshow:
- grid.show(axes=8)
- # can also create a grid from np.mgrid:
- X, Y = np.mgrid[-12:12:1000*1j, 0:15:1000*1j]
- vgrid = Grid(s=(X[:,0], Y[0]))
- if doshow:
- vgrid.show(axes=8).close()
- ######################################################
- print("Test 31")
- settings.immediate_rendering = False
- plt = Plotter(N=18)
- for i in range(18):
- ps = ParametricShape(i).color(i)
- if doshow:
- plt.at(i).show(ps, ps.name)
- if doshow:
- plt.interactive()
|