Announcement

Collapse
No announcement yet.

Four Dimensional Trig makes my brain hurt

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Four Dimensional Trig makes my brain hurt

    Looking for a double-check of my thought process here...

    The ISS orbit is circular but it does not orbit over the equator, it has an orbital inclination of 51.6 degrees.

    Click image for larger version  Name:	F4.png Views:	0 Size:	107.6 KB ID:	808147



    That results in this ground-track:

    Click image for larger version  Name:	orbit.jpg Views:	0 Size:	73.0 KB ID:	808148

    Everything I can find says that the orbit "looks like a sine wave" but never says that it is one. Because circles are involved I tend to think that it is, or close. They probably say that because the Earth rotates under the ISS, which stretches out the wave, and that if the Earth didn't rotate, the orbit would be a perfect sine wave.

    I need to calculate the ISS heading at any point in its orbit, based on the latitude. Some points are easy; it crosses the equator at a heading of exactly 51.6 degrees, and at 51.6 North and South the heading is due east, and it cycles back and forth between those values. Using SIN/COS is going to produce a reasonably good approximation.

    One orbit takes 90 minutes, so the Earth moves (1.5 hours / 24 hours) = about 6% of the circumference per orbit, so the error would average 3% over the course of one orbit, and I can live with that if I have to, but the latitude values are accurate to within 0.02% so 3% is really sloppy.

    Added: At the equator the answer is 51.6 degrees but that could be a northeast or southeast heading. I can figure out the correct sign by looking at the trend of the data, so all I need is the angle.
    "Not my circus, not my monkeys."

  • #2
    My first thought is that it looks like a sine wave when projected onto on a Mercator projection which distorts longitude at high latitudes. Since it a three dimensional orbit and a sine wave is two dimensional, it can't actually be one.

    Use another map projection and it may be very different.

    Comment


    • #3
      Next thought, it is a circukar orbit with respect to the centre of the earth but not with regard to any point on the surface.
      I'd guess that you need to look at plotting a great circle with a fixed longitude offset per unit of time.

      Comment


      • #4
        You're right that the projection would change the "visual" shape, but it wouldn't change the math, would it? The heading would be the same using any projection.

        "Not my circus, not my monkeys."

        Comment


        • #5
          Originally posted by Eric Pearson View Post
          You're right that the projection would change the "visual" shape, but it wouldn't change the math, would it? The heading would be the same using any projection.
          Correct. But it's doubtful if the math involves a simple sine formula.

          Actually, I think the following is your answer.
          Below is the formula to determine the great circle bearing from any lat/lon to any other lat/lon
          In this case, since you apparently know the lat/long of an adjacent point on the orbit, you need to plug in the current position and the lat/lon of the adjacent point on the orbital path.

          If the points are close enough together in time you may be able to disregard the effect of precession. If not, you'll have to increment Lon2 by the amgle that the earth has regressed under the satellite in the time it takes to go from point1 to point2. (You are interested in the apparent bearing/direction of travel relative to the earths surface which is a vector sum, and not the actual bearing/direction from the satellites great circle frame of reference).

          Code:
          FUNCTION GCDir(la1 AS EXT, lo1 AS EXT, la2 AS EXT, lo2 AS EXT) AS EXT
              'Great Circle Initial Bearing in degrees
              LOCAL lat1, lat2 , lon1, lon2, Dist AS EXT
              lat1 = DegToRad(la1):lon1 = DegToRad(lo1)
              lat2 = DegToRad(la2):lon2 = DegToRad(lo2)
              FUNCTION = (RadToDeg(ATAN2(COS(lat1)*SIN(lat2)-SIN(lat1)*COS(lat2)*COS(lon2-lon1),SIN(lon2-lon1)*COS(lat2))) +360) MOD 360
          END FUNCTION

          Comment


          • #6
            Based on your projection question I just graphed some real-world tracking data, and got a result I didn't expect. The horizontal scale is 8 second intervals. Less sine-like than I expected, more like a sine wave with harmonics.

            Click image for larger version  Name:	latgraph.png Views:	0 Size:	4.1 KB ID:	808159

            Between +/- 40 degrees it's almost linear.
            "Not my circus, not my monkeys."

            Comment


            • #7
              You might try using the top image and spinning the earth, your path would remain the same as you've shown, that is the station would keep traveling the path you've charted but only the current position, past positions would have to spin with the earth. Of course, if you add the earth's motion around the sun you'd get a different kettle of fish. Not really much help, am I?
              Rod
              In some future era, dark matter and dark energy will only be found in Astronomy's Dark Ages.

              Comment


              • #8
                Originally posted by Rodney Hicks View Post
                Of course, if you add the earth's motion around the sun you'd get a different kettle of fish. Not really much help, am I?
                The frame of reference is either the earth's centre or an arbitrary point on the surface, so motion around the sun is irrelevant.

                Or maybe not:

                Whenever life gets you down, Mrs.Brown
                And things seem hard or tough
                And people are stupid, obnoxious or daft
                And you feel that you've had quite enough
                Just remember that you're standing on a planet that's evolving
                And revolving at nine hundred miles an hour
                That's orbiting at nineteen miles a second, so it's reckoned
                A sun that is the source of all our power
                The sun and you and me and all the stars that we can see
                Are moving at a million miles a day
                In an outer spiral arm, at forty thousand miles an hour
                Of the galaxy we call the 'milky way'

                Our galaxy itself contains a hundred billion stars
                It's a hundred thousand light years side to side
                It bulges in the middle, sixteen thousand light years thick
                But out by us, it's just three thousand light years wide
                We're thirty thousand light years from galactic central point
                We go 'round every two hundred million years
                And our galaxy is only one of millions of billions
                In this amazing and expanding universe
                The universe itself keeps on expanding and expanding
                In all of the directions it can whizz
                As fast as it can go, the speed of light, you know
                Twelve million miles a minute and that's the fastest speed there is
                So remember, when you're feeling very small and insecure
                How amazingly unlikely is your birth
                And pray that there's intelligent life somewhere up in space
                'Cause it's bugger all down here on Earth


                Comment


                • #9

                  Is this of any help?
                  No guarantees, but it looks ok to me.
                  It needs to be adjusted for each quadrant to get recognisable numbers out.

                  I assume the Earth is a sphere and the orbit is circular.
                  The working out of the equations is a bit fiddly to explain but I'll try if you want.

                  The result matches your expectations, in particular.." it crosses the equator at a heading of exactly 51.6 degrees" (or 90-51.6 = 38.4 degrees relative to North).
                  But, that assumes the heading is based on the fixed background of stars and not on the rotating surface of the Earth so it might need to be adjusted to take into account that the observer on the Earth is moving.
                  Code:
                  'PBCC6 program
                  #COMPILE EXE
                  #BREAK ON
                  
                  
                  GLOBAL Pi AS EXT
                  
                  FUNCTION PBMAIN
                  
                  LOCAL Angle,Lat,Lon,Cos516, Sin516, DegToRad, RadToDeg, Degrees, IncrementalLat, IncrementalLon, IncrementalAngle, Increment, Heading AS EXT
                  
                  Pi = 3.14159265358979323##
                  
                  Increment = 0.000000001## 'a very small increment to apply to the orbital position to determine which direction the satellite is moving
                  
                  'Factors to convert degrees to/from radians
                  DegToRad = pi/180
                  RadToDeg = 180/pi
                  
                  
                  'The inclination of the orbit is a constant of 51.6 and it's useful to calculate these 2 values in advance as they don't change
                  Cos516 = COS(DegToRad * 51.6)
                  Sin516 = SIN(DegToRad * 51.6)
                  
                  
                  'Angle is the distance around the orbit that the satellite has moved.
                  'Zero degrees is the point over the equator, heading North.
                  'Heading is the Angle from North, so North would be zero degrees heading, East is 90 degrees heading.
                  'So at zero angle, the Latitude is zero (over the equator) and the Longitude is zero and the heading is 38.4 (i.e 90-51.6) degrees.
                  
                  
                  FOR Degrees = 0 TO 360
                  'convert degrees to Radians
                  Angle = Degrees * DegToRad
                  
                  'work out the latitude and longitude at this point in the orbit
                  Lon = ATN(SIN(Angle)*Cos516/COS(Angle))
                  Lat = ArcCos(SIN(Angle)*Sin516)
                  
                  'To find the heading, move the satellite forward a small increment and recalculate the Latitude and Longitude
                  IncrementalAngle = Angle + increment
                  IncrementalLon = ATN(SIN(IncrementalAngle)*Cos516/COS(IncrementalAngle))
                  IncrementalLat = ArcCos(SIN(IncrementalAngle)*Sin516)
                  
                  'The heading is given by the direction the satallite has moved over the small increment in angle.
                  Heading = - ATN((IncrementalLon - Lon)/(IncrementalLat - Lat))
                  
                  
                  PRINT Degrees, FORMAT$(90-(Lat*RadToDeg),"0.000"), FORMAT$(Lon*RadToDeg,"0.000") , FORMAT$(Heading*RadToDeg,"0.000")
                  
                  NEXT
                  
                  
                  PRINT "done"
                  WAITKEY$
                  
                  
                  END FUNCTION
                  
                  
                  
                  FUNCTION ArcSin(Value AS EXT) AS EXT
                  
                  FUNCTION = ATN(Value / SQR(1 - Value * Value))
                  
                  END FUNCTION
                  
                  
                  
                  
                  FUNCTION ArcCos(Value AS EXT) AS EXT
                  
                  FUNCTION = pi / 2 - ATN(Value / SQR(1 - Value * Value))
                  
                  
                  END FUNCTION

                  Comment


                  • #10
                    Originally posted by Paul Dixon View Post
                    But, that assumes the heading is based on the fixed background of stars and not on the rotating surface of the Earth so it might need to be adjusted to take into account that the observer on the Earth is moving.
                    Nice, that's effectively using the same method as my method in Post#5.

                    If my reasoning is correct:
                    Given you know the orbital period of the satellite (1 degree in 0.25 minutes) and the Earth's rotational speed (1 degree in 4 minutes, you can make that final adjustment by incrementing Lon by an additional (IncrementalAngle / 16)

                    Comment


                    • #11
                      Stuart,
                      I already have the version to compensate for the Earth's rotation but it's not clear what Eric wants as his stated parameters suggest he doesn't want to take that into account.


                      Comment


                      • #12
                        Nicely done, Paul, that looks like exactly what I need! Actual orbital mechanics! I'll play with this tonight.

                        > what Eric wants

                        As an example, there is a time-lapse camera pointed in the direction of travel. Out of many millions of images in a database, I need to find the ones that are pictures of location x,y. Added: to make things more fun the camera is sometimes pointed aft, or 30 degrees port/starboard, etc and the up/down camera angle varies, but all of those things can be taken into account.
                        "Not my circus, not my monkeys."

                        Comment


                        • #13
                          Here is a modified version.
                          It uses a 2 argument version of ATN to get the quadrants right so it now shows the expected values for latitude, longitude and heading.
                          Code:
                          PBCC6 program
                          #COMPILE EXE
                          #BREAK ON
                          
                          
                          GLOBAL Pi AS EXT
                          
                          FUNCTION PBMAIN
                          
                          LOCAL Angle,Lat,Lon,Cos516, Sin516, DegToRad, RadToDeg, Degrees, IncrementalLat, IncrementalLon, IncrementalAngle, Increment, Heading AS EXT
                          LOCAL PlanetRotationTime, SatelliteOrbitTime AS EXT
                          
                          Pi = 3.14159265358979323##
                          
                          Increment = 0.0000001##  'a very small increment to apply to the orbital position to determine which direction the satellite is moving
                          
                          'Factors to convert degrees to/from radians
                          DegToRad = pi/180
                          RadToDeg = 180/pi
                          
                          SatelliteOrbitTime =  90    '90 minutes approx
                          PlanetRotationTime =  9999999999999' 1440  '24 hours (1440 minutes) approx   By making this huge it acts as though the planet doesn't rotate.
                          
                          
                          'The inclination of the orbit is a constant of 51.6 and it's useful to calculate these 2 values in advance as they don't change
                          Cos516 = COS(DegToRad * 51.6)
                          Sin516 = SIN(DegToRad * 51.6)
                          
                          
                          'Angle is the distance around the orbit that the satellite has moved.
                          'Zero degrees is the point over the equator, heading North.
                          'Heading is the Angle from North, so North would be zero degrees heading, East is 90 degrees heading.
                          'So at zero angle, the Latitude is zero (over the equator) and the Longitude is zero and the heading is 38.4 (i.e 90-51.6) degrees.
                          
                          
                          PRINT "Degrees","Latitude","Longitude","Heading"
                          
                          
                          FOR Degrees = 0 TO 360
                              'convert degrees to Radians
                              Angle = Degrees * DegToRad  + 0.000001     'the 0.000001 is a fudge.  It intoduces an error too small to be noticed but it stops the angles 0, 90, 180, 270, 360 from ever being exact which causes the ATN funtion to overflow and return wrong values
                          
                              'work out the latitude and longitude at this point in the orbit
                              Lon = ATN2(COS(Angle), SIN(Angle)*Cos516)   - Angle * SatelliteOrbitTime/PlanetRotationTime        'minus the rotational correction because they travel in the same direction.
                              Lat = ArcSin(SIN(Angle)*Sin516)
                          
                              'To find the heading, move the satellite forward a small increment and recalculate the Latitude and Longitude
                              IncrementalAngle = Angle + increment
                              
                              IncrementalLon = ATN2(COS(IncrementalAngle), SIN(IncrementalAngle)*Cos516)  - IncrementalAngle * SatelliteOrbitTime/PlanetRotationTime
                              IncrementalLat = ArcSin(SIN(IncrementalAngle)*Sin516)
                          
                              'The heading is given by the direction the satellite has moved over the small increment in angle.
                              Heading =  ATN2(IncrementalLat - Lat, IncrementalLon - Lon)
                          
                              PRINT Degrees, FORMAT$((Lat*RadToDeg),"0.000"), FORMAT$(Lon*RadToDeg,"0.000") ,  FORMAT$(Heading*RadToDeg,"0.000")
                          
                          NEXT
                          
                          
                          PRINT "done"
                          WAITKEY$
                          
                          
                          END FUNCTION
                          
                          
                          
                          FUNCTION ArcSin(Value AS EXT) AS EXT
                          
                          FUNCTION = ATN(Value / SQR(1 - Value * Value))
                          
                          END FUNCTION
                          
                          
                          
                          
                          FUNCTION ArcCos(Value AS EXT) AS EXT
                          
                          FUNCTION = pi / 2 - ATN(Value / SQR(1 - Value * Value))
                          
                          
                          END FUNCTION
                          
                          
                          
                          FUNCTION ATN2 ( X AS EXT, Y AS EXT) AS EXT
                          #REGISTER NONE
                          
                          '!fld y                  ;Get y onto the FPU stack (for parameters passed ByVal)
                          !mov eax,y              ;for ByRef (a little quicker)get the pointer to Y
                          !fld tbyte ptr [eax]    ;load the  value pointed to by eax
                          
                          
                          '!fld x                 ;Get x onto the FPU stack (for parameters passed ByVal)
                          !mov eax,x              ;for ByRef (a little quicker)get the pointer to x
                          !fld tbyte ptr [eax]    ;load the  value pointed to by eax
                          
                          !fpatan                 ;Get the ATAN(y/x), Put result In ST(1) Then pop the stack.
                                                  'i.e. result is now on top of stack in st(0)
                          
                          !ftst                   ;test ST(0) (that's the top of stack) against zero
                          !fstsw ax               ;get the result into AX
                          !sahf                   ;get the FPU flags into the CPU flags
                          !jae short skip         ;if above or equal (i.e.value is not -ve) then skip the Add 2*pi code
                          
                          !fldpi                  ;get pi
                          !fadd st(1),st(0)       ;add pi to result
                          !faddp                  ;and again, for 2pi then pop the now unneeded pi from st(0)
                                                  'this leaves the result +2pi on the stack at st(0) if it was -ve
                           skip:
                          
                          !fstp function          ;store the result directly in the function return value and pop the stack
                          
                          
                          END FUNCTION

                          Comment


                          • #14
                            Hi Paul,

                            It took me a while to wrap my brain around what your code is doing; that's some impressive math! Your program makes sense and produces logical results, with the latitude (+/- 51.6) and heading values (38.4 - 141.6) cycling exactly the way I'd expect during an orbit. I'll take your word for the trig *.

                            But I'm having trouble grokking how to use your code to solve my problem. I'm not starting with how far into an orbit the ISS is (0-360 degrees), I'm starting with a latitude and a longitude, and the "origin" of the orbit (0,0) doesn't really exist. Also, the longitude should be irrelevant in a latitude-to-heading calculation. If the ISS crosses (say) 45 degrees north latitude at a longitude X, one orbit later it will cross 45N at a different longitude but the heading will be exactly the same. ( Eventually the ISS would fly over 45N at every possible longitude, always at the same heading.)

                            Hmm, the NASA data is only accurate to within 0.1 degree, so I could use your code to create a lookup table for all of the 0.1 degree increments between +/- 51.6. That would end up being much faster that doing any calculation for 4+ million locations.

                            I do appreciate your help!

                            -- Eric


                            * (Mumble) years ago, my high school rearranged the math curriculum and my graduating class ended up skipping over trig. At my last reunion I talked to my old science/math-class friends, and we all agreed that it really screwed us up later on.
                            "Not my circus, not my monkeys."

                            Comment


                            • #15
                              To be on the safe side you might check for the argument being out of bounds:
                              Code:
                              pi = Atn(1)*4 'Global
                              ph = Atn(1)*2 'Global
                              
                              Function ArcSin(Value As Ext) As Ext
                               If     Value >= 1 Then
                                Function = ph
                               ElseIf Value <= -1 Then
                                Function = -ph
                               Else
                                Function = Atn(Value / Sqr(1 - Value * Value))
                               End If
                              End Function
                              
                              Function ArcCos(Value As Ext) As Ext
                               If     Value >= 1 Then
                                Function = 0
                               ElseIf Value <= -1 Then
                                Function = pi
                               Else
                                Function = ph - Atn(Value / Sqr(1 - Value * Value))
                               End If
                              End Function
                              Politically incorrect signatures about immigration patriots are forbidden. Searching “immigration patriots” is forbidden. Thinking about searching ... well, don’t even think about it.

                              Comment


                              • #16
                                Eric,
                                the "origin" of the orbit is just the last ascending node, which I thought you were given as it is one of the points you specified in your first post.

                                A look-up table is good, or you could calculate the angle from the longitude and latitude by re-arranging one of the equations.

                                Code:
                                Lon = ATN2(COS(Angle), SIN(Angle)*Cos516)
                                so:
                                Code:
                                Angle = ATN2(COS(Lon)*cos516, SIN(Lon))
                                Now you can use the given longitude to work out the angle the satellite has moved through and then use that angle, as in the original code, to calculate the heading.

                                Code:
                                'PBCC6 program
                                 #COMPILE EXE
                                 #BREAK ON
                                
                                
                                 GLOBAL Pi AS EXT
                                
                                 FUNCTION PBMAIN
                                
                                 LOCAL Angle,Lat,Lon,Cos516, Sin516, DegToRad, RadToDeg, Degrees, IncrementalLat, IncrementalLon, IncrementalAngle, Increment, Heading AS EXT
                                
                                 Pi = 3.14159265358979323##
                                
                                 Increment = 0.0000001##  'a very small increment to apply to the orbital position to determine which direction the satellite is moving
                                
                                 'Factors to convert degrees to/from radians
                                 DegToRad = pi/180
                                 RadToDeg = 180/pi
                                
                                
                                 'The inclination of the orbit is a constant of 51.6 and it's useful to calculate these 2 values in advance as they don't change
                                 Cos516 = COS(DegToRad * 51.6)
                                 Sin516 = SIN(DegToRad * 51.6)
                                
                                
                                 'Angle is the distance around the orbit that the satellite has moved.
                                 'Zero degrees is the point over the equator, heading North.
                                 'Heading is the Angle from North, so North would be zero degrees heading, East is 90 degrees heading.
                                 'So at zero angle, the Latitude is zero (over the equator) and the Longitude is zero and the heading is 38.4 (i.e 90-51.6) degrees.
                                
                                
                                 PRINT "Degrees","Latitude","Longitude","Heading"
                                
                                
                                 FOR Degrees = 0 TO 360     'NOTE this is now the given longitude, not the angle that the satellite has moved around its orbit
                                     'convert degrees to Radians
                                     Lon = Degrees * DegToRad
                                
                                     'work out an angle that the satellite has moved through which corresponds to this longitude
                                     Angle = ATN2(COS(Lon)*cos516, SIN(Lon))  + 0.000001 'the 0.000001 is a fudge.  It introduces an error too small to be noticed but it stops the angles 0, 90, 180, 270, 360 from ever being exact which causes the ATN function to overflow
                                
                                     'work out the latitude and longitude at this point in the orbit
                                     Lon = ATN2(COS(Angle), SIN(Angle)*Cos516)   'this longitude should be the same as the given longitude so it's not necessary to calculate it
                                     Lat = ArcSin(SIN(Angle)*Sin516)
                                
                                     'To find the heading, move the satellite forward a small increment and recalculate the Latitude and Longitude
                                     IncrementalAngle = Angle + increment
                                
                                     IncrementalLon = ATN2(COS(IncrementalAngle), SIN(IncrementalAngle)*Cos516)
                                     IncrementalLat = ArcSin(SIN(IncrementalAngle)*Sin516)
                                
                                     'The heading is given by the direction the satellite has moved over the small increment in angle.
                                     Heading =  ATN2(IncrementalLat - Lat, IncrementalLon - Lon)
                                
                                
                                     PRINT Degrees, FORMAT$((Lat*RadToDeg),"0.000"), FORMAT$(Lon*RadToDeg,"0.000") ,  FORMAT$(Heading*RadToDeg,"0.000")
                                
                                 NEXT
                                
                                
                                 PRINT "done"
                                 WAITKEY$
                                
                                
                                 END FUNCTION
                                
                                
                                
                                 FUNCTION ArcSin(Value AS EXT) AS EXT
                                
                                 FUNCTION = ATN(Value / SQR(1 - Value * Value))
                                
                                 END FUNCTION
                                
                                
                                
                                
                                 FUNCTION ArcCos(Value AS EXT) AS EXT
                                
                                 FUNCTION = pi / 2 - ATN(Value / SQR(1 - Value * Value))
                                
                                
                                 END FUNCTION
                                
                                
                                
                                 FUNCTION ATN2 ( X AS EXT, Y AS EXT) AS EXT
                                 #REGISTER NONE
                                
                                 '!fld y                  ;Get y onto the FPU stack (for parameters passed ByVal)
                                 !mov eax,y              ;for ByRef (a little quicker)get the pointer to Y
                                 !fld tbyte ptr [eax]    ;load the  value pointed to by eax
                                
                                
                                 '!fld x                 ;Get x onto the FPU stack (for parameters passed ByVal)
                                 !mov eax,x              ;for ByRef (a little quicker)get the pointer to x
                                 !fld tbyte ptr [eax]    ;load the  value pointed to by eax
                                
                                 !fpatan                 ;Get the ATAN(y/x), Put result In ST(1) Then pop the stack.
                                                         'i.e. result is now on top of stack in st(0)
                                
                                 !ftst                   ;test ST(0) (that's the top of stack) against zero
                                 !fstsw ax               ;get the result into AX
                                 !sahf                   ;get the FPU flags into the CPU flags
                                 !jae short skip         ;if above or equal (i.e.value is not -ve) then skip the Add 2*pi code
                                
                                 !fldpi                  ;get pi
                                 !fadd st(1),st(0)       ;add pi to result
                                 !faddp                  ;and again, for 2pi then pop the now unneeded pi from st(0)
                                                         'this leaves the result +2pi on the stack at st(0) if it was -ve
                                  skip:
                                
                                 !fstp function          ;store the result directly in the function return value and pop the stack
                                
                                
                                 END FUNCTION

                                Comment


                                • #17
                                  Also, the longitude should be irrelevant in a latitude-to-heading calculation.
                                  It's not irrelevant because longitude is part of the calculation for the heading.

                                  Comment


                                  • #18
                                    When simulating an orbit using your technique, yes.

                                    But the ISS can pass over (say) the equator at literally any longitude -- in fact the longitude will always be different from one orbit to the next -- but the heading at the equator will always be the same angle, regardless of the longitude, i.e. regardless of which orbit number it is.

                                    If the answer that a formula produces for the heading when passing the equator changes when you change the longitude, the formula must be wrong. The answer should be the same, regardless of the longitude.
                                    "Not my circus, not my monkeys."

                                    Comment


                                    • #19
                                      The answer should not change.
                                      Does the answer change?
                                      Does the program give the expected results?

                                      Comment


                                      • #20
                                        I agreed earlier that your program produces results that look correct to me. But if all I know is 1) the physics of the orbit and 2) that right now the ISS is located near my house at 45N,85W how do I derive the heading using your technique? I don't see a way to get from point A to point B, so to speak.



                                        "Not my circus, not my monkeys."

                                        Comment

                                        Working...
                                        X