Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2021
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. t1 = timestamp();
  2.  
  3. with undo "fuse" on (
  4. --params
  5. local threshold = 10.;
  6.  
  7. local s1 = objects[1]; --TODO
  8. local s2 = objects[2]; --TODO
  9.  
  10. local numspls1 = numsplines s1;
  11. local numspls2 = numsplines s2;
  12.  
  13. struct fuse_t ( spl1, knt1, spl2, knt2, mid);
  14. local fuses = #();
  15.  
  16. local tmp_p;
  17. local tmp_k;
  18. local tmp_h;
  19.  
  20. --find best fusing candidates
  21. for i = 1 to numspls1 do (
  22. numknts1 = numknots s1 i;
  23. for j = 1 to numknts1 do (
  24. local p1 = getKnotPoint s1 i j;
  25. local bestDistance = copy threshold;
  26. --search nearest point in second shape
  27. for k = 1 to numspls2 do (
  28. numknts2 = numknots s2 k;
  29. for h = 1 to numknts2 do (
  30. local p2 = getKnotPoint s2 k h;
  31. local dist = distance p1 p2;
  32. if dist < bestDistance do (
  33. bestDistance = dist;
  34. tmp_k = k;
  35. tmp_h = h;
  36. tmp_p = (p1 + p2) * 0.5;
  37. )
  38. )
  39. )
  40. if bestDistance < threshold do (
  41. append fuses (fuse_t spl1:i knt1:j spl2:tmp_k knt2:tmp_h mid:tmp_p)
  42. )
  43. )
  44. )
  45.  
  46. --fuse canditates to mid point
  47. for f in fuses do (
  48. setKnotPoint s1 f.spl1 f.knt1 f.mid;
  49. setKnotPoint s2 f.spl2 f.knt2 f.mid;
  50. )
  51. updateshape s1;
  52. updateshape s2;
  53. )
  54.  
  55. t2 = timestamp();
  56. format "time took %s\n" ((t2 - t1) * 1e-3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement