@@ -903,118 +903,6 @@ static int get_observer_data_latlon( const char FAR *mpc_code,
903
903
return( rval);
904
904
}
905
905
906
- /* The offset between a satellite observation and the earth or sun */
907
- /* is stored in a second line, as described at */
908
- /* https://www.minorplanetcenter.net/iau/info/SatelliteObs.html */
909
- /* This format allows parallax type '1' in kilometers or type '2' */
910
- /* in AU. If the input file contains the line '#relax_xyz', Find_Orb */
911
- /* is less picky about where decimal points and +/- signs appear. */
912
- /* (It used to insist that the field be "filled out" with digits, but */
913
- /* at least some records contain lower precision positions. Thus far, */
914
- /* the ones I've seen still had enough digits to match the precision of */
915
- /* the instrument, so I'm letting "short" records slide if they're */
916
- /* only lacking three or fewer places.) */
917
-
918
- #define SATELL_COORD_ERR_NO_ERROR 0
919
- #define SATELL_COORD_ERR_BAD_SIGN -1
920
- #define SATELL_COORD_ERR_BAD_NUMBER -2
921
- #define SATELL_COORD_ERR_NO_DECIMAL -3
922
- #define SATELL_COORD_ERR_DECIMAL_MISPLACED -4
923
- #define SATELL_COORD_ERR_UNKNOWN_OFFSET -5
924
- #define SATELL_COORD_ERR_EXACTLY_ZERO -6
925
- #define SATELL_COORD_ERR_INSIDE_EARTH -7
926
-
927
- #define N_SATELL_COORD_ERRORS 8
928
-
929
- static bool strict_sat_xyz_format = true;
930
-
931
- inline double get_satellite_coordinate( const char *iptr, int *decimal_loc)
932
- {
933
- char tbuff[12];
934
- const char sign_byte = *iptr;
935
- double rval = 0.;
936
-
937
- memcpy( tbuff, iptr, 11);
938
- tbuff[11] = '\0';
939
- if( !strict_sat_xyz_format)
940
- {
941
- rval = atof( tbuff + 1);
942
- if( sign_byte == '-')
943
- rval = -rval;
944
- *decimal_loc = 0;
945
- }
946
- else if( sign_byte != '+' && sign_byte != '-')
947
- {
948
- *decimal_loc = SATELL_COORD_ERR_BAD_SIGN;
949
- rval = atof( tbuff);
950
- }
951
- else
952
- {
953
- char *tptr;
954
- int n_bytes_read;
955
-
956
- if( sscanf( tbuff + 1, "%lf%n", &rval, &n_bytes_read) != 1
957
- || n_bytes_read < 7)
958
- *decimal_loc = SATELL_COORD_ERR_BAD_NUMBER;
959
- else if( (tptr = strchr( tbuff, '.')) == NULL)
960
- *decimal_loc = SATELL_COORD_ERR_NO_DECIMAL;
961
- else
962
- *decimal_loc = (int)( tptr - tbuff);
963
- if( sign_byte == '-')
964
- rval = -rval;
965
- if( *decimal_loc <= 0)
966
- debug_printf( "decimal loc %d: '%s', n_bytes_read %d\n", *decimal_loc,
967
- tbuff, n_bytes_read);
968
- }
969
- return( rval);
970
- }
971
-
972
- int get_satellite_offset( const char *iline, double *xyz)
973
- {
974
- size_t i;
975
- int error_code = 0;
976
- const int observation_units = (int)iline[32] - '0';
977
- double r2 = 0., min_radius;
978
-
979
- assert( 80 == strlen( iline));
980
- if( !strcmp( iline + 77, "275")) /* geocentric occultation observations */
981
- min_radius = 0.; /* can have offsets inside the earth; */
982
- else /* others should be outside the atmosphere */
983
- min_radius = 1.01 * EARTH_RADIUS_IN_AU;
984
- for( i = 0; i < 3; i++) /* in case of error, use 0 offsets */
985
- xyz[i] = 0.;
986
- iline += 34; /* this is where the offsets start */
987
- for( i = 0; i < 3; i++, iline += 12)
988
- {
989
- int decimal_loc;
990
-
991
- xyz[i] = get_satellite_coordinate( iline, &decimal_loc);
992
- if( decimal_loc < 0 && !error_code)
993
- error_code = decimal_loc;
994
- if( observation_units == 1) /* offset given in km */
995
- {
996
- xyz[i] /= AU_IN_KM;
997
- if( strict_sat_xyz_format && !error_code)
998
- if( decimal_loc < 6 || decimal_loc > 8)
999
- error_code = SATELL_COORD_ERR_DECIMAL_MISPLACED;
1000
- if( !error_code && xyz[i] == 0.)
1001
- error_code = SATELL_COORD_ERR_EXACTLY_ZERO;
1002
- }
1003
- else if( observation_units == 2) /* offset in AU */
1004
- { /* offset must be less than 100 AU */
1005
- if( strict_sat_xyz_format && !error_code)
1006
- if( decimal_loc != 2 && decimal_loc != 3)
1007
- error_code = SATELL_COORD_ERR_DECIMAL_MISPLACED;
1008
- }
1009
- else if( !error_code) /* don't know about this sort of offset */
1010
- error_code = SATELL_COORD_ERR_UNKNOWN_OFFSET;
1011
- r2 += xyz[i] * xyz[i];
1012
- }
1013
- if( !error_code && r2 < min_radius * min_radius)
1014
- error_code = SATELL_COORD_ERR_INSIDE_EARTH;
1015
- equatorial_to_ecliptic( xyz);
1016
- return( error_code);
1017
- }
1018
906
1019
907
/* Used in part for sanity checks ("is the observed RA/dec above the
1020
908
horizon? Is the sun _below_ the horizon at that time?") Either
@@ -3995,8 +3883,6 @@ OBSERVE FAR *load_observations( FILE *ifile, const char *packed_desig,
3995
3883
including_obs = true;
3996
3884
else if( !memcmp( buff, "#toffset", 7))
3997
3885
observation_time_offset = atof( buff + 8) / seconds_per_day;
3998
- else if( !memcmp( buff, "#relax_xyz", 10))
3999
- strict_sat_xyz_format = false;
4000
3886
else if( !memcmp( buff, "#interstellar", 12))
4001
3887
is_interstellar = 1;
4002
3888
else if( !memcmp( buff, "#time ", 6))
0 commit comments