issue_948.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from vedo import *
  2. settings.default_font = "VictorMono"
  3. r = 0.2
  4. points_2d = np.random.rand(10000, 2) - 0.5
  5. values = np.random.rand(10000)
  6. vmin, vmax = values.min(), values.max()
  7. pcloud1 = Points(points_2d, c='k', r=5).rotate_x(30)
  8. pcloud2 = pcloud1.clone().cut_with_cylinder(r=r, invert=True)
  9. cyl = Cylinder(r=r, height=1, res=360).alpha(0.2)
  10. dists = pcloud1.distance_to(cyl, signed=True)
  11. mask = dists < 0
  12. print("The boolean mask is", mask)
  13. pcloud1.pointdata['values'] = values
  14. pcloud1.pointdata['MASK'] = mask
  15. pts1 = pcloud1.clone().point_size(5)
  16. pts1.cut_with_scalar(0.5, 'MASK')
  17. pts1.cmap('bwr', 'values', vmin=vmin, vmax=vmax).add_scalarbar3d(title='values')
  18. # pts1.cmap('RdYlBu', 'MASK').add_scalarbar3d(title='MASK')
  19. pts1.scalarbar.rotate_x(90)
  20. grid = Grid(res=[100,100]).rotate_x(30)
  21. grid.interpolate_data_from(pcloud1, n=3)
  22. grid.cut_with_cylinder(r=r, invert=True)
  23. grid.cmap('bwr', 'values', vmin=vmin, vmax=vmax).wireframe(False).lw(0)
  24. grid.add_scalarbar3d(title='interpolated values').scalarbar.rotate_x(90)
  25. show(cyl, grid, axes=True)