Advertisement
Guest User

dfdg

a guest
Jan 25th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 1.77 KB | None | 0 0
  1. //funkcja odpowiedzialna za tworzenie macierzy obrotu w osi Z
  2. function [RotZ]=calcRotZ(theta)
  3.     RotZ = [cos(theta),-sin(theta),0,0; sin(theta),cos(theta),0,0; 0,0,1,0; 0,0,0,1]
  4. endfunction
  5.  
  6. //funkcja odpowiedzialna za tworzenie macierzy przesunięcia w osi Z
  7. function [TransZ]=calcTransZ(d)
  8.     TransZ = [1,0,0,0; 0,1,0,0; 0,0,1,d; 0,0,0,1]
  9. endfunction
  10.  
  11. //funkcja odpowiedzialna za tworzenie macierzy przesunięcia w osi X
  12. function [TransX]=calcTransX(a)
  13.     TransX = [1,0,0,a; 0,1,0,0; 0,0,1,0; 0,0,0,1]
  14. endfunction
  15.  
  16. //funkcja odpowiedzialna za tworzenie macierzy obrotu w osi X
  17. function [RotX]=calcRotX(alfa)
  18.     RotX = [1,0,0,0; 0,cos(alfa),-sin(alfa),0; 0,sin(alfa), cos(alfa),0; 0,0,0,1]
  19. endfunction
  20.  
  21. //O1 liczenie macierzy pierwszego członu
  22. theta = (0 * %pi / 180) //zmienny kąt
  23. RotZ = calcRotZ(theta)
  24. TransZ = calcTransZ(290)
  25. RotX = calcRotX((%pi/2))
  26. O1 = RotZ * TransZ * RotX
  27.  
  28. for i = -11:11
  29.  
  30.     //O2 drugiego członu
  31.     theta = ((i*10) * %pi / 180) //zmienny kąt - zmienna z pętli powiększona o 10 dla przyspieszenia liczenia
  32.     RotZ = calcRotZ(theta)
  33.     TransX = calcTransX(270)
  34.     O2 = RotZ * TransX
  35.     disp(i);
  36.  
  37.     for j = -11:7
  38.        
  39.     //O3 trzeciego członu
  40.         theta = ((j*10) * %pi / 180) //zmienny kąt
  41.         RotZ = calcRotZ(theta)
  42.     TransX = calcTransX(270)
  43.     TransX2 = calcTransX(70)
  44.     RotX = calcRotX((%pi/2))
  45.     TransZ = calcTransZ(302)
  46.    
  47.         O3 = RotZ * TransX * TransX2 * RotX * TransZ
  48.    
  49.  
  50.     for k = -12:12
  51.  
  52.         //O4 czwartego członu
  53.         theta = ((k*10) * %pi / 180) //zmienny kąt
  54.         RotZ = calcRotZ(theta)
  55.         TransX = calcTransX(72)
  56.         RotX = calcRotX((%pi/2))
  57.         O4 = RotZ * TransX * RotX
  58.        
  59.         T = O1 * O2 * O3 * O4
  60.         //disp(T)
  61.        
  62.         plot(T(1,4), T(3,4), '.')
  63.        end
  64.     end
  65. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement