Advertisement
cyphric

Untitled

Sep 23rd, 2018
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.18 KB | None | 0 0
  1. clear all
  2. load('fiskbana')
  3. plot3(X(1),Y(1),Z(1),'o',X(end),Y(end),Z(end),'*',X,Y,Z);
  4. u = [0,4,-1;-5,1,3;0,1,0];
  5. v = [3,-2,1;-1,0,1;-1,1,1];
  6. q = [1,2,3;-10,-1,1;2,10,0];
  7. P = [X(1), Y(1), Z(1)];
  8. distvec = [];
  9. for b = 1:3 %We want to do this for 3 planes
  10.     i = 1; %Denna rackaren viktig!
  11.     normal = crossP(u(b,:),v(b,:));%Calculate the normalvectors for the 3 planes
  12.     while langd(proj(P - q(b,:),normal)) > 0.5 && i < length(T) %The task is to find the length less than 0.5
  13.        P = [X(i), Y(i), Z(i)];
  14.        i = i + 1;
  15.        avs = langd(proj(P - q(b,:),normal)); %Beräkna avstånddet
  16.        distvec = [distvec, avs]; %
  17.     end
  18.         if avs < 0.5 && T(i) < 10
  19.             disp(['Plan ', num2str(b), ' fangade natet efter ', num2str(T(i)), ' sekunder']);
  20.         else
  21.             disp(['Plan ', num2str(b), ' fangade ej fisken innan T = 10 sekunder']);
  22.         end
  23.      
  24. end
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. function s = skal(a,b)
  33.    s = sum(a.*b);
  34. end
  35.  
  36. function L = langd(a)
  37.     L = sqrt(sum(a.^2));
  38. end
  39.  
  40. function pr = proj(c,d)
  41.     pr = skal(c,d)/(langd(d)^2).*d;
  42. end
  43.  
  44. function cr = crossP(c,d)
  45.     cr = [(c(2)*d(3)-c(3)*d(2));(c(3)*d(1)-c(1)*d(3));(c(1)*d(2)-c(2)*d(1))]';
  46. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement