PDA

View Full Version : 3D Satellite Tracker Using C# WFA



Hosain
12-07-2015, 08:58 AM
Greetings all.
I am a beginner with OpenGL, so I will very much appreciate some help

I was asked to develop 3D Satellite Tracker in C# WFA like NASA's iSat : science.nasa.gov/iSat/?group=education&satellite=31118 ,I tried OpenGL once in college in c++ and all I did was drawing square, triangle. I tried to modify this Project : codeproject.com/Articles/577259/D-solar-system-with-OpenGL-and-Csharp ,but the guy is so expert with OpenGl I could't understand most of his work. I know for now that I will need to draw space(black screen and White dots), earth (sphere with texture), the Satellite which i have no idea at all how to do it and its Orbit. The satellite will be moving according to something called Two-Line element ( a data format encoding a list of orbital elements of an Earth-orbiting object for a given point in time). Can anyone help me with ideas how to do it,plus if you know any C# OpenGL tutorials cuz i couldn't find one.


Thank you very much and kind regards,

Carmine
12-07-2015, 11:20 PM
I've written satellite orbit simulations in OpenGL and C/C++. How much time were you given to do this? It's not a trivial task. I went to the NASA web page. It's a cute demo - very interactive. The good news for you is that the graphics is very basic. Note that the satellite models are not 3D. They are all done with the same image or sprite. So maybe you don't have to worry satellite models and satellite attitude?

Propagating the satellites from TLE's would take me more time to develop than doing the graphics. In my sims, a previously developed orbit mechanics library is used to propagate the satellites. Is such a library available to you? Look for one where you work or on the internet. It must be linkable with C#. The NeHe Tutorials (nehe.gamedev.net) website has some examples of simple OpenGL programs written in C#.

I'm not familiar with C#. Is it possible that an orbit mechanics library written in C could be linked to a C# program?

Hosain
12-08-2015, 12:14 AM
I've written satellite orbit simulations in OpenGL and C/C++. How much time were you given to do this? It's not a trivial task. I went to the NASA web page. It's a cute demo - very interactive. The good news for you is that the graphics is very basic. Note that the satellite models are not 3D. They are all done with the same image or sprite. So maybe you don't have to worry satellite models and satellite attitude?

Propagating the satellites from TLE's would take me more time to develop than doing the graphics. In my sims, a previously developed orbit mechanics library is used to propagate the satellites. Is such a library available to you? Look for one where you work or on the internet. It must be linkable with C#. The NeHe Tutorials (nehe.gamedev.net) website has some examples of simple OpenGL programs written in C#.

I'm not familiar with C#. Is it possible that an orbit mechanics library written in C could be linked to a C# program?

Carmine thank you so much for your comment, I have until February and unfortunately my masters scholarship depends on this project, My colleague did 2D tracker but its just a picture of Saudi Arabia map and once the satellite is over Saudi you'll see red dot moving , he did this using Zeptomoby.OrbitTools.dll and converting latitude and longitude to x, y. I found online how to convert lat and long to xyz, but i think im messing something logically, I will check the NeHe tutorials. I appreciate it

Carmine
12-08-2015, 04:23 PM
Does your code actually propagate a satellite from the TLE values?
Is it giving you the lat, lon, alt of the satellite as a function of time?
If so, most of your problem is solved. Converting to x,y,z is easy.
I suggest you test your propagator be positioning the satellites using lat, lon, and alt.
Use a unit sphere centered at the origin for the earth with the X axis going through the
equator at 0.0 degs lon and 0.0 degs lat. The Z axis goes through the north pole.
Convert altitude from your propagator into earth radii.
With this setup, longitude is a +Z rotation and latitude is a -Y rotation.
Try positioning a big point (s) around the earth using the lat-lon-alt coming out
of your propagator and using the rotations above. It would help if you drew and
labeled the X,Y,Z axes too. The idea here is to check to make sure the propagator
is giving you reasonable numbers.

Hosain
12-13-2015, 08:59 AM
Does your code actually propagate a satellite from the TLE values?
Is it giving you the lat, lon, alt of the satellite as a function of time?
If so, most of your problem is solved. Converting to x,y,z is easy.
I suggest you test your propagator be positioning the satellites using lat, lon, and alt.
Use a unit sphere centered at the origin for the earth with the X axis going through the
equator at 0.0 degs lon and 0.0 degs lat. The Z axis goes through the north pole.
Convert altitude from your propagator into earth radii.
With this setup, longitude is a +Z rotation and latitude is a -Y rotation.
Try positioning a big point (s) around the earth using the lat-lon-alt coming out
of your propagator and using the rotations above. It would help if you drew and
labeled the X,Y,Z axes too. The idea here is to check to make sure the propagator
is giving you reasonable numbers.

I haven't done anything yet with that, all Im trying to do now is drawing, I find it so hard to do , once im done i will try your idea with TLE

thnaks

Carmine
12-13-2015, 03:21 PM
I haven't done anything yet with that, all Im trying to do now is drawing, ....
Where do you stand with the graphics?
Do you have an earth and/or a satellite?
I'd use a unit sphere for the earth and a big point for the satellite to start with.

The Legacy NeHe tutorials #4 and #5 include C# code to generate a 3D scene
with moving objects. Replace the pyramid with a sphere for the earth, and
replace the cube with a large point for the satellite. Use gluSphere to do the
earth.

These tutorials are written in the older 'fixed pipeline' style of GL. I mention
them because they provide source code in many languages such as C#. They
should allow you to get started fast. Once you are able to display a simple, 3D,
scene, you may want to convert over to Modern GL.