Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <body style="background: linear-gradient(to bottom right,#ffb032,#ff31d5);">
- <b>keplerian elements</b>:<br>
- <input type=text id="mass">M
- <input type=button value="calculate" onClick="calc_cartesian()">(keplarian to cartesian)<br>
- <input type=text id="sma">sma<br>
- <input type=text id="ecc">ecc<br>
- <input type=text id="inc">inc<br>
- <input type=text id="aof">aop<br>
- <input type=text id="ta">ta<br>
- <input type=text id="ascn">ascn<br><br>
- <b>cartesian elements:</b><br>
- <input type=text id="rx">rx
- <input type=button value="calculate" onClick="calc_keplarian()">(cartesian to keplerian)<br>
- <input type=text id="ry">ry<br>
- <input type=text id="rz">rz<br>
- <input type=text id="vx">vx<br>
- <input type=text id="vy">vy<br>
- <input type=text id="vz">vz<br>
- <script>
- function calc_cartesian() {
- var mass = document.getElementById("mass").value;
- var sma = document.getElementById("sma").value;
- var ecc = document.getElementById("ecc").value;
- var inc = document.getElementById("inc").value;
- var aof = document.getElementById("aof").value;
- var ta = document.getElementById("ta").value;
- var ascn = document.getElementById("ascn").value;
- var grav_const = 6.6740831e-11;
- var pi = 3.14159265358979323846;
- var ascn_rad = ascn/180*pi;
- var ta_rad = ta/180*pi;
- var aof_rad = aof/180*pi;
- var inc_rad = inc/180*pi;
- var ecc_anom = Math.acos((Math.cos(ta_rad)+1*ecc)/(1+(ecc*Math.cos(ta_rad))));
- if (ecc>1) {ecc_anom = Math.acosh((Math.cos(ta_rad)+(1*ecc))/(1+((1*ecc)*Math.cos(ta_rad))));}
- var rad = sma*(1-(ecc*ecc))/(1+(ecc*Math.cos(ta_rad)));
- var epsilon = Math.sqrt((grav_const*mass)/(Math.abs(sma)*rad*rad));
- var x_prime = rad*Math.cos(ta_rad);
- var y_prime = rad*Math.sin(ta_rad);
- var I_prime = (-1)*sma*epsilon*Math.sin(ecc_anom);
- var J_prime = (-1)*sma*Math.sqrt(1-(ecc*ecc))*epsilon*Math.cos(ecc_anom);
- if (ecc>1) {J_prime = (-1)*sma*Math.sqrt((ecc*ecc)-1)*epsilon*Math.cos(ecc_anom);}
- var px = (Math.cos(aof_rad)*Math.cos(ascn_rad))-(Math.sin(ascn_rad)*Math.sin(aof_rad)*Math.cos(inc_rad));
- var py = (Math.cos(aof_rad)*Math.sin(ascn_rad))+(Math.cos(ascn_rad)*Math.sin(aof_rad)*Math.cos(inc_rad));
- var pz = Math.sin(aof_rad)*Math.sin(inc_rad);
- var qx = (-1)*(Math.sin(aof_rad)*Math.cos(ascn_rad))-(Math.sin(ascn_rad)*Math.cos(aof_rad)*Math.cos(inc_rad));
- var qy = (-1)*(Math.sin(aof_rad)*Math.sin(ascn_rad))+(Math.cos(ascn_rad)*Math.cos(aof_rad)*Math.cos(inc_rad));
- var qz = Math.cos(aof_rad)*Math.sin(inc_rad);
- var rx = (x_prime*px)+(y_prime*qx);
- var ry = (x_prime*py)+(y_prime*qy);
- var rz = (x_prime*pz)+(y_prime*qz);
- var vx = (I_prime*px)+(J_prime*qx);
- var vy = (I_prime*py)+(J_prime*qy);
- var vz = (I_prime*pz)+(J_prime*qz);
- document.getElementById("rx").value = rx;
- document.getElementById("ry").value = ry;
- document.getElementById("rz").value = rz;
- document.getElementById("vx").value = vx;
- document.getElementById("vy").value = vy;
- document.getElementById("vz").value = vz;
- }
- function calc_keplarian() {
- var x = document.getElementById("rx").value;
- var y = document.getElementById("ry").value;
- var z = document.getElementById("rz").value;
- var i = document.getElementById("vx").value;
- var j = document.getElementById("vy").value;
- var k = document.getElementById("vz").value;
- var mass = document.getElementById("mass").value;
- var grav_const = 6.6740831e-11;
- var pi = 3.14159265358979323846;
- var hx = (y*k)-(z*j);
- var hy = (z*i)-(x*k);
- var hz = (x*j)-(y*i);
- var nx = (-1)*hy;
- var ny = hx;
- var n = Math.sqrt((nx*nx)+(ny*ny));
- var h = Math.sqrt((hx*hx)+(hy*hy)+(hz*hz));
- var r = Math.sqrt((x*x)+(y*y)+(z*z));
- var v = Math.sqrt((i*i)+(j*j)+(k*k));
- var ex = (1/(grav_const*mass))*((((v*v)-((grav_const*mass)/r))*x)-(((x*i)+(y*j)+(z*k))*i))
- var ey = (1/(grav_const*mass))*((((v*v)-((grav_const*mass)/r))*y)-(((x*i)+(y*j)+(z*k))*j))
- var ez = (1/(grav_const*mass))*((((v*v)-((grav_const*mass)/r))*z)-(((x*i)+(y*j)+(z*k))*k))
- var ecc2 = Math.sqrt((ex*ex)+(ey*ey)+(ez*ez))
- var inc2 = (180/pi)*Math.acos(hz/h)
- var ascn2 = (180/pi)*Math.acos(nx/n)
- var sma2 = ((h*h)/(1-(ecc2*ecc2)))/(grav_const*mass)
- var aof2 = (180/pi)*Math.acos(((nx*ex)+(ny*ey))/(n*ecc2))
- var ta2 = (180/pi)*Math.acos(((ex*x)+(ey*y)+(ez*z))/(ecc2*r))
- if (0>ez) {
- aof2 = 360-aof2}
- if (0>ny) {
- ascn2 = 360-ascn2}
- if (0>rz) {
- ta = 360-ta}
- document.getElementById("sma").value = sma2;
- document.getElementById("ecc").value = ecc2;
- document.getElementById("inc").value = inc2;
- document.getElementById("aof").value = aof2;
- document.getElementById("ta").value = ta2;
- document.getElementById("ascn").value = ascn2;
- }
- </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement