Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. function meshBoundaries(V, F)
  2.  
  3. M = zeros(size(V,1));
  4.  
  5. for i = 1:size(F,1)
  6. if F(i,1)<F(i,2)
  7. M(F(i,1), F(i,2)) = M(F(i,1),F(i,2))+1;
  8. else
  9. M(F(i,2), F(i,1)) = M(F(i,2),F(i,1))+1;
  10. end
  11. if F(i,2)<F(i,3)
  12. M(F(i,2), F(i,3)) = M(F(i,2),F(i,3))+1;
  13. else
  14. M(F(i,3), F(i,2)) = M(F(i,3),F(i,2))+1;
  15. end
  16. if F(i,3)<F(i,1)
  17. M(F(i,3), F(i,1)) = M(F(i,3),F(i,1))+1;
  18. else
  19. M(F(i,1), F(i,3)) = M(F(i,1),F(i,3))+1;
  20. end
  21. end
  22.  
  23. trisurf(F,V(:,1),V(:,2),V(:,3))
  24.  
  25. for row = 1:size(M,1)
  26. for col = 1:size(M,2)
  27. if M(row,col) == 1
  28. hold on;
  29. plot3([V(row,1); V(col,1)], [V(row,2); V(col,2)], [V(row,3); V(col,3)], 'r')
  30. end
  31. end
  32. end
  33.  
  34.  
  35. end
  36.  
  37. function printOff(filename)
  38. [V, F] = readOff(filename)
  39.  
  40. trimesh(F,V(:,1),V(:,2),V(:,3))
  41. axis equal;
  42. end
  43.  
  44. function [V,F] = readOff(filename)
  45. fid = fopen(filename,'r');
  46. str = fgets(fid);
  47. p = fscanf(fid,'%d %d %d\n', 3);
  48. V = fscanf(fid,'%f %f %f\n', [3 p(1)]);
  49. V=V';
  50. F = fscanf(fid,'%d %d %d %d\n', [4 p(2)]);
  51. F=F(2:4,:)+1;
  52. F=F';
  53. fclose(fid);
  54. end
  55.  
  56. [V, F] = readOff('screwdriver.off')
  57. meshBoundaries(V,F)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement