Download Instructions
- For those more comfortable with Windows installation programs, click
here
to download Satellite Finder as a self-extracting Windows executable containing the SatFinder.jar Java executable (711 KB).
- For all other users on Windows and users of all other operating systems, click
here
to download the SatFinder.jar Java executable (478 KB).
- All users need to download and install a recent Java runtime engine (1.5 or more recent) at
http://java.com.
Installation Instructions
- If you downloaded the Windows executable option above, run the self-extracting executable.
- If you downloaded the Java JAR file, place it in any convenient location on your system and create appropriate links.
- All users should also install an appropriate java runtime engine, as explained above.
- Be sure to read the provided help file if difficulties arise, or if you wish to
add satellites or Earth locations not provided by default.
Running Satellite Finder
User Support
- Sorry — there is no user support. Please do not write to ask for this kind of assistance.
- Satellite Finder is basically free, and I cannot possibly offer "customer
support" for a free program.
- If you want to update the satellite list that comes with Satellite Finder, you can find out how to do this by reading the help file. That's the tab clearly marked "Help." The satellite list is a plain-text data file, trivial to understand and edit. I really cannot re-release Satellite Finder every time there is a change in the satellite list.
- To report bugs (not to ask for help), you may post to my
message page.
Revision History
- 04/03/2007 Version 4.3 build 1166. Changed to target Java runtime version 1.5. This recent series of changes moves Satellite Finder from Java 1.4.2 -> 1.5, with consequent improvements primarily in appearance and launch speed.
- 04/03/2007 Version 4.3 build 1164. Updated Java required runtime target to 1.6.
- 04/02/2007 Version 4.3 Build 1162. Upgraded and recompiled to Java 1.6. Some users will have to update their Java runtime engines at http://java.com.
- 12/20/2004 Version 4.3 Build 1138. Updated/corrected the default satellite list.
- 04/09/2004 Version 4.2 Build 1134. Added polarization angle (skew) computation, added one-click option to copy satellite position list to system clipboard.
- 12/28/2003 Version 4.1 Build 1045. Improved position data entry and display format.
- 12/08/2003 Version 4.1 Build 1037. Corrected some errors in the help file.
- 12/07/2003 Version 4.1 Build 1035. Improved the formatting of the data display, rewrote the help file.
- 12/06/2003 Version 4.0 Build 1000. First public release of the Java version.
Technical note
The mathematics required to generate satellite sighting angles is not terribly
difficult, and there are sites that offer this service free online.
Notwithstanding
this, there is a site that charges US$12
per position
for this information. This is a new low, even for the Internet.
Here are my Java functions to compute azimuth and elevation angles and skew angles for satellites:
final double toDeg = 180.0/Math.PI;
final double toRad = Math.PI/180.0;
/*
*
* ComputePos(input: (earth) lat (deg), lng (deg),
* (satellite) satlng (deg),
*
* output: Complex(x = az true (deg), y = el (deg))
*
* az format: North = 0, East = 90, South = 180, West = 270
* el format: Horizontal 0, Vertical 90
*
*/
private Complex computePos(double lat, double lng, double satLng) {
double dlngr = (lng-satLng) * toRad;
double az = Math.atan2(Math.sin(lat * toRad),Math.tan(dlngr)) * toDeg;
az = (270.0 - az) / 360.0;
az = az - Math.floor(az);
az *= 360.0;
double r1=6.6107; // ratio synchronous orbit/earth radius
double clng = Math.cos(dlngr);
double clat = Math.cos(lat * toRad);
double v1=r1*clat*clng-1.0;
double v2=r1*Math.sqrt(1-clat*clat*clng*clng);
double el = Math.atan2(v1,v2) * toDeg;
return new Complex(az,el);
}
/*
*
* ComputeSkew(input: (earth) lat (deg), lng (deg),
* (satellite) satlng (deg),
*
* output: double skew (deg)
*
*/
private double computeSkew(double lat, double lng, double satLng) {
double dlngr = (satLng-lng) * toRad;
return (Math.atan2(Math.tan(lat * toRad),Math.sin(dlngr)) * toDeg) - 90.0;
}
// The rather simple "Complex" class:
public class Complex {
private double x;
private double y;
public Complex(double x,double y) {
this.x = x;
this.y = y;
}
public double x() {
return x;
}
public double y() {
return y;
}
}
This is not terribly complex. These functions can obviously be revised for other
languages. Remember that southern latitudes and western longitudes should be
negative numbers. And be sure to read the provided help file.
|