General Question Predict Equatorial LAN

fred18

Addon Developer
Addon Developer
Donator
Joined
Feb 2, 2012
Messages
1,667
Reaction score
115
Points
78
Hi all,

I am trying to predict the equatorial LAN of a launch.

I don't want to modify it during the ascent, I just want to launch at te exact time to have the correct LAN (with a given inclination).

I did a bit of research and I found that you can now the terrestrial longitude of the ascending node, knowing the current longitude, the current heading and the current latitude, with the formula:

eq4-33.gif


Where delta Lambda is current terrestrial longitude minus lan terrestrial longitude, Delta is current latitude and Beta is current heading.

So if I suppose to launch with azimuth heading 90° delta lambda will be -90° from my current longitude.

So again if I launch from longitude +90° I will have that the terrestrial longitude of AN will be exactly on the position where there is the greenwich meridian in that moment. Then the earth will rotate etc etc, but if I am able to determine the direction of that point towards the vernal equinox I will have done my job, is that correct?

If so, I have tried a couple of things but never had luck.

Like getting the terrestrial longitude of the AN and constructing a vector

_V=(cos(long),0,sin(long))

and the multiplying this vector with the current complete earth rotation matrix (not only Ra, but the complete matrix) and then doing the dot product with _V(1,0,0) [vernal equinox in global coordinates], and then the arcocosine of this to get the number but still no luck...

Could someone help me a bit with that?

:tiphat:

---------- Post added at 12:42 PM ---------- Previous post was at 11:40 AM ----------

actually this code worked quite well for azimuth = 90° (just a test), but it's still off by a few centimals, that's what i don't understand:

Code:
double lon,lat,rad;
GetEquPos(lon,lat,rad);
double lang=lon-0.5*PI;
VECTOR3 locdir=_V(cos(lang),0,sin(lang));
double w;
w=oapiGetPlanetCurrentRotation(GetSurfaceRef());
MATRIX3 mrot=_M(cos(w),0,-sin(w),0,1,0,sin(w),0,cos(w));
MATRIX3 ra;
oapiGetPlanetObliquityMatrix(GetSurfaceRef(),&ra);
MATRIX3 totrot=mul(ra,mrot);
VECTOR3 globdir=mul(totrot,locdir);
double lan=acos(dotp(globdir,_V(1,0,0)));
sprintf(oapiDebugString(),"lan %.3f",lan*DEG);
 
When trying to predict the correct launch time to an orbiting target, I used the same formulas as you. To predict the equatorial LAN at launch (or better: the LAN that you would get, if you would achieve orbit exactly now with the given equatorial inclination) you just need to add the current rotation angle of the planet (function oapiGetPlanetCurrentRotation ) to lambda_1. Is it that what you wanted to get?

Of course you get different LAN's for the two possible launch azimuths. For the launch time prediction I just calculated a (not constant) LAN that the target would have in the equatorial, rotating(!) frame. Then I just calculated the time from now to a launch opportunity with t_node1 = (RA-lambda_1)/(2*PI/86164.10132). RA being the LAN of the target.
 
First of all thank you for your answer!

Then there is a thing that I'm still not able to understand:

(or better: the LAN that you would get, if you would achieve orbit exactly now with the given equatorial inclination)

Actually the second that I liftoff and i start to roll and pitch my trajectory stands on a plane already inclined correctly with the earth, so once i fix the theoretical point in space of the ascending node it should be exactly that, but it's changing a bit (the code above gives an error of launch opportunity of around 12 seconds).

I figured out your formula on my own but I use it only in ex-post way: i launch once, check the difference between my lan and my target lan, apply the formula, find the delta time, reopen and launch at correct time.

But I would like to do it in the predictive way as you were mentioning.

How do you calculate the variable RA?

Thank you in advance!
 
The variable LAN is just the current LAN above the surface of the earth (in geographic coordinates we usually use). The earth rotates and this numbers changes, so it is usually not very helpful.

I calculate it by rotating the ecliptic state vector with earth's rotation matrix (oapiGetRotationMatrix) and then converting this state vector to the orbital elements. There might be easier ways, but this is how I get the LAN.

Regarding the 12 seconds off, of course the earth rotates during the ascent. Does this number change, if you test it with a different date (2013 or at least a few years away from 2000)?
 
If I understand it correctly, you need to find the local apparent sidereal time of the geographic longitude of the ascending node, the later you calculate at burnout with the equations you list.

A simple algorithm for finding local apparent sidereal time can be found here:
http://aa.usno.navy.mil/faq/docs/GAST.php

Edit:
I've implemented the equations using Excel and made a LAN calculator, but have not thoroughly tested. Please consider this spreadsheet beta. I'm using Orbiter's MJD for time instead of Julian time directly. I use the launch site and azimuth as an estimate for the burn out point, assuming an instantaneous launch to orbit, thus the labeling.
 

Attachments

Last edited:
Guys thank you very much for your replies!

I'll give a deep look into them and let you know


Regarding the 12 seconds off, of course the earth rotates during the ascent. Does this number change, if you test it with a different date (2013 or at least a few years away from 2000)?

yes, it gets greater the more i get away from year 2000.

Booga thanks a lot for your spreadsheet, I will go into it in the next hours

:cheers:
 
Back
Top