discussion_800.py 946 B

123456789101112131415161718192021222324252627282930313233343536
  1. from vedo import *
  2. def make_cap(t1, t2):
  3. newpoints = t1.vertices.tolist() + t2.vertices.tolist()
  4. newfaces = []
  5. for i in range(n-1):
  6. newfaces.append([i, i+1, i+n])
  7. newfaces.append([i+n, i+1, i+n+1])
  8. newfaces.append([2*n-1, 0, n])
  9. newfaces.append([2*n-1, n-1, 0])
  10. capm = Mesh([newpoints, newfaces])
  11. return capm
  12. pts = [[sin(x), cos(x), x/3] for x in np.arange(0.1, 3, 0.3)]
  13. vline = Line(pts, lw=3)
  14. t1 = Tube(pts, r=0.2, cap=False)
  15. t2 = Tube(pts, r=0.3, cap=False)
  16. tc1a, tc1b = t1.boundaries().split()
  17. tc2a, tc2b = t2.boundaries().split()
  18. n = tc1b.npoints
  19. tc1b.join(reset=True).clean() # needed because indices are flipped
  20. tc2b.join(reset=True).clean()
  21. capa = make_cap(tc1a, tc2a)
  22. capb = make_cap(tc1b, tc2b)
  23. # show(vline, t1, t2, tc1a, tc1b, tc2a, tc2b, capa, capb, axes=1).close()
  24. thick_tube = merge(t1, t2, capa, capb).lw(1)#.clean()
  25. show("thick_tube", vline, thick_tube, axes=1).close()