Advertisement
Guest User

Untitled

a guest
Jul 6th, 2015
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.46 KB | None | 0 0
  1. function [rVect, vVect] = getStatefromKepler_Alg(sma, ecc, inc, raan, arg, tru, gmu)
  2. %getStatefromKepler_Alg Summary of this function goes here
  3. %   Detailed explanation goes here
  4.  
  5.     %%%%%%%%%%
  6.     % Special Case: Circular Equitorial
  7.     %%%%%%%%%%
  8.     if(ecc < 1E-10 && (inc < 1E-10 || abs(inc-pi) < 1E-10))
  9.         l = raan + arg + tru;
  10.         tru = l;
  11.         raan = 0;
  12.         arg = 0;
  13.     end
  14.  
  15.     %%%%%%%%%%
  16.     % Special Case: Circular Inclined
  17.     %%%%%%%%%%
  18.     if(ecc < 1E-10 && inc >= 1E-10 && abs(inc-pi) >= 1E-10)
  19.         u = arg + tru;
  20.         tru = u;
  21.         arg = 0.0;
  22.     end
  23.  
  24.     %%%%%%%%%%
  25.     % Special Case: Elliptical Equitorial
  26.     %%%%%%%%%%
  27.     if(ecc >= 1E-10 && (inc < 1E-10 || abs(inc-pi) < 1E-10))
  28.         raan = 0;
  29.     end
  30.  
  31.     p = sma*(1-ecc^2);
  32.     rPQW = [p*cos(tru) / (1 + ecc*cos(tru));
  33.             p*sin(tru) / (1 + ecc*cos(tru));
  34.             0];
  35.  
  36.     vPQW = [-sqrt(gmu/p)*sin(tru);
  37.             sqrt(gmu/p)*(ecc + cos(tru));
  38.             0];
  39.  
  40.     TransMatrix = [cos(raan)*cos(arg)-sin(raan)*sin(arg)*cos(inc), -cos(raan)*sin(arg)-sin(raan)*cos(arg)*cos(inc), sin(raan)*sin(inc);
  41.                    sin(raan)*cos(arg)+cos(raan)*sin(arg)*cos(inc), -sin(raan)*sin(arg)+cos(raan)*cos(arg)*cos(inc), -cos(raan)*sin(inc);
  42.                    sin(arg)*sin(inc),                              cos(arg)*sin(inc),                               cos(inc)];
  43.  
  44.     rVect = TransMatrix * rPQW;
  45.     vVect = TransMatrix * vPQW;
  46. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement