Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. <body style="background: linear-gradient(to bottom right,#ffb032,#ff31d5);">
  2. <b>keplerian elements</b>:<br>
  3. <input type=text id="mass">M
  4. <input type=button value="calculate" onClick="calc_cartesian()">(keplarian to cartesian)<br>
  5. <input type=text id="sma">sma<br>
  6. <input type=text id="ecc">ecc<br>
  7. <input type=text id="inc">inc<br>
  8. <input type=text id="aof">aop<br>
  9. <input type=text id="ta">ta<br>
  10. <input type=text id="ascn">ascn<br><br>
  11. <b>cartesian elements:</b><br>
  12. <input type=text id="rx">rx
  13. <input type=button value="calculate" onClick="calc_keplarian()">(cartesian to keplerian)<br>
  14. <input type=text id="ry">ry<br>
  15. <input type=text id="rz">rz<br>
  16. <input type=text id="vx">vx<br>
  17. <input type=text id="vy">vy<br>
  18. <input type=text id="vz">vz<br>
  19. <script>
  20. function calc_cartesian() {
  21. var mass = document.getElementById("mass").value;
  22. var sma = document.getElementById("sma").value;
  23. var ecc = document.getElementById("ecc").value;
  24. var inc = document.getElementById("inc").value;
  25. var aof = document.getElementById("aof").value;
  26. var ta = document.getElementById("ta").value;
  27. var ascn = document.getElementById("ascn").value;
  28. var grav_const = 6.6740831e-11;
  29. var pi = 3.14159265358979323846;
  30. var ascn_rad = ascn/180*pi;
  31. var ta_rad = ta/180*pi;
  32. var aof_rad = aof/180*pi;
  33. var inc_rad = inc/180*pi;
  34. var ecc_anom = Math.acos((Math.cos(ta_rad)+1*ecc)/(1+(ecc*Math.cos(ta_rad))));
  35. if (ecc>1) {ecc_anom = Math.acosh((Math.cos(ta_rad)+(1*ecc))/(1+((1*ecc)*Math.cos(ta_rad))));}
  36. var rad = sma*(1-(ecc*ecc))/(1+(ecc*Math.cos(ta_rad)));
  37. var epsilon = Math.sqrt((grav_const*mass)/(Math.abs(sma)*rad*rad));
  38. var x_prime = rad*Math.cos(ta_rad);
  39. var y_prime = rad*Math.sin(ta_rad);
  40. var I_prime = (-1)*sma*epsilon*Math.sin(ecc_anom);
  41. var J_prime = (-1)*sma*Math.sqrt(1-(ecc*ecc))*epsilon*Math.cos(ecc_anom);
  42. if (ecc>1) {J_prime = (-1)*sma*Math.sqrt((ecc*ecc)-1)*epsilon*Math.cos(ecc_anom);}
  43. var px = (Math.cos(aof_rad)*Math.cos(ascn_rad))-(Math.sin(ascn_rad)*Math.sin(aof_rad)*Math.cos(inc_rad));
  44. var py = (Math.cos(aof_rad)*Math.sin(ascn_rad))+(Math.cos(ascn_rad)*Math.sin(aof_rad)*Math.cos(inc_rad));
  45. var pz = Math.sin(aof_rad)*Math.sin(inc_rad);
  46. var qx = (-1)*(Math.sin(aof_rad)*Math.cos(ascn_rad))-(Math.sin(ascn_rad)*Math.cos(aof_rad)*Math.cos(inc_rad));
  47. var qy = (-1)*(Math.sin(aof_rad)*Math.sin(ascn_rad))+(Math.cos(ascn_rad)*Math.cos(aof_rad)*Math.cos(inc_rad));
  48. var qz = Math.cos(aof_rad)*Math.sin(inc_rad);
  49. var rx = (x_prime*px)+(y_prime*qx);
  50. var ry = (x_prime*py)+(y_prime*qy);
  51. var rz = (x_prime*pz)+(y_prime*qz);
  52. var vx = (I_prime*px)+(J_prime*qx);
  53. var vy = (I_prime*py)+(J_prime*qy);
  54. var vz = (I_prime*pz)+(J_prime*qz);
  55. document.getElementById("rx").value = rx;
  56. document.getElementById("ry").value = ry;
  57. document.getElementById("rz").value = rz;
  58. document.getElementById("vx").value = vx;
  59. document.getElementById("vy").value = vy;
  60. document.getElementById("vz").value = vz;
  61. }
  62. function calc_keplarian() {
  63. var x = document.getElementById("rx").value;
  64. var y = document.getElementById("ry").value;
  65. var z = document.getElementById("rz").value;
  66. var i = document.getElementById("vx").value;
  67. var j = document.getElementById("vy").value;
  68. var k = document.getElementById("vz").value;
  69. var mass = document.getElementById("mass").value;
  70. var grav_const = 6.6740831e-11;
  71. var pi = 3.14159265358979323846;
  72. var hx = (y*k)-(z*j);
  73. var hy = (z*i)-(x*k);
  74. var hz = (x*j)-(y*i);
  75. var nx = (-1)*hy;
  76. var ny = hx;
  77. var n = Math.sqrt((nx*nx)+(ny*ny));
  78. var h = Math.sqrt((hx*hx)+(hy*hy)+(hz*hz));
  79. var r = Math.sqrt((x*x)+(y*y)+(z*z));
  80. var v = Math.sqrt((i*i)+(j*j)+(k*k));
  81. var ex = (1/(grav_const*mass))*((((v*v)-((grav_const*mass)/r))*x)-(((x*i)+(y*j)+(z*k))*i))
  82. var ey = (1/(grav_const*mass))*((((v*v)-((grav_const*mass)/r))*y)-(((x*i)+(y*j)+(z*k))*j))
  83. var ez = (1/(grav_const*mass))*((((v*v)-((grav_const*mass)/r))*z)-(((x*i)+(y*j)+(z*k))*k))
  84. var ecc2 = Math.sqrt((ex*ex)+(ey*ey)+(ez*ez))
  85. var inc2 = (180/pi)*Math.acos(hz/h)
  86. var ascn2 = (180/pi)*Math.acos(nx/n)
  87. var sma2 = ((h*h)/(1-(ecc2*ecc2)))/(grav_const*mass)
  88. var aof2 = (180/pi)*Math.acos(((nx*ex)+(ny*ey))/(n*ecc2))
  89. var ta2 = (180/pi)*Math.acos(((ex*x)+(ey*y)+(ez*z))/(ecc2*r))
  90. if (0>ez) {
  91. aof2 = 360-aof2}
  92. if (0>ny) {
  93. ascn2 = 360-ascn2}
  94. if (0>rz) {
  95. ta = 360-ta}
  96. document.getElementById("sma").value = sma2;
  97. document.getElementById("ecc").value = ecc2;
  98. document.getElementById("inc").value = inc2;
  99. document.getElementById("aof").value = aof2;
  100. document.getElementById("ta").value = ta2;
  101. document.getElementById("ascn").value = ascn2;
  102. }
  103. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement