[Previous]
[Next]
NAME:
say
CALLING SEQUENCE:
PRO say, str, silent=silent, threshold=threshold
INCLUDE:
@compile_opt.pro
CALLS: ***
InitVar, who_am_i
CALLED BY:
InsituTimeSeries [1], InsituTimeSeries [2], getnagoyasources, getootyasources
is_running, mk_flick, vu_correlate, vu_earthskymap, vu_get_page, vu_getdata
vu_gettime, vu_header, vu_image, vu_insitu_raw, vu_localskymap, vu_mean, vu_movie
vu_nagoyasourcemap, vu_new_time, vu_planarcut, vu_prefix, vu_quick_movie
vu_radialcut, vu_read, vu_remoteview, vu_select, vu_solardisk, vu_spherecut
vu_syncgrid, vu_synopticmap, vu_timeseries, vu_update_hours, vu_update_marker
vu_vox_sequence, vu_vox_write, vu_write
[Previous]
[Next]
NAME:
scalarproduct
PURPOSE:
Calculate scalar product for two vectors
CATEGORY:
gen/idl/toolbox/math
CALLING SEQUENCE:
FUNCTION scalarproduct, r1, r2, $
cylin = cylin , $
sphere = sphere , $
rect = rect , $
degrees = degrees , $
angle = angle
INPUTS:
r1 arrays[3,*]; type: int or float
r1 arrays[3,*]; type: int or float
vectors for which the product is to be taken.
the first dimension identifies the three coordinates: Cartesian (default),
cylindrical or spherical.
OPTIONAL INPUT PARAMETERS:
/angle if set then information about the angle between the two vectors is returned:
i.e. cos(angle) = |r1.r2|/|r1||r2|
/cylin, /sphere, /rect
indicates whether input vectors are in cylindrical, spherical or rectangular
coordinates. If none is set then rectangular is assumed.
/degrees if set, and spherical or cylindrical coordinates are used, then the angles
are assumed to be in degrees (default: radians)
OUTPUTS:
result array[*] same type as input
scalar products or angle information are returned as array[n]
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
CV_COORD, InitVar, SyncArgs, SyncDims
CALLED BY:
RotationMeasure, jpl_phase
PROCEDURE:
> The arrays r1 and r2 do not necessarily have the same dimensions, i.e.
if r1 is an array[3,n] and r2 is an array[3] then r2 is interpreted as an array[3,n]
with all n vectors the same (SyncArgs is used to synchronize the array dimensions).
> Arrays r1 and r2 can have more than two dimensions, i.e. if r1 and r2 are both
arrays[3,n,m] then the scalar products will be returned as array[n,m]
MODIFICATION HISTORY:
AUG-1999, Paul Hick (UCSD/CASS)
NOV-2005, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Extracted from vectorproduct procedure.
[Previous]
[Next]
NAME:
SetFileSpec
PURPOSE:
Split file names into file components.
Optionally parse the file names.
CATEGORY:
gen/idl/toolbox/files
CALLING SEQUENCE:
PRO SetFileSpec, FileSpec, FileParts, $
parse = Parse , $
nosave = NoSave, $
strict = strict, $
status = Status
INPUTS:
FileSpec string array or scalar, containing file names
(read-only)
OPTIONAL INPUT PARAMETERS:
/parse if set, the file names are parsed.
parsing is successful if
- The directory exists
- There is write access to the directory
- The file name is valid (the file may or may not exist)
(if no file name is specified this step is skipped)
If the parsing is succesful, missing file parts will
be added to the FileParts array; if not all parts are
set to the null string.
/nosave by default, the FileParts array returned as ouput
is saved internally in a common block (which can
be accessed with GetFileSpec and PutFileSpec).
if nosave is set, the internal data are not overwritten.
/strict by default the file type is the part of the
filename trailing the last dot, i.e. if the file name
is file.txt.gz, the file type is .gz.
If /strict is set the type becomes the part following
the first dot, i.e. the type is .txt.gz.
OUTPUTS:
FileParts string array with one dimension more than
FileSpec; the extra first dimension has 6 elements,
containing node, device, directory, name, type, version
!!! the FileParts argument is sometimes useful in
combination with the /nosave keyword. Preferably this
argument should not be used; instead use GetFileSpec
and PutFileSpec to manipulate the same information.
OPTIONAL OUTPUT PARAMETERS:
status=Status long integer array with same dimensions as FileSpec.
If keyword Parse set:
0 : indicates that parsing failed
1 : indicates that parsing was succesfull
If keyword Parse not set, all values are set to 1
CALLS: ***
CheckDir, FILEPATH, FindAllFiles, InitVar, IsType, SyncDims, os_separator, strposn
INCLUDE:
@compile_opt.pro ; On error, return to caller
@filespec_common.pro ; Common block with arrays File and Parts
CALLED BY:
FindAllFiles, FindAllSubDirs, GetFileSpec, PutFileSpec, bin_read, bin_write, do_file
findfile_fix, get_page, gunzip_file, makemovie, mk_flick, nso_fe_read, qImage
qImage_Pick, qImage_cw_SmeiMask, qSave2File_Save, qView, qView_FileFilter
qView_PickFiles, qView_Save2File, qView_TMO_tracksky, qset_page_pick, smei_buf
smei_frm_update, smei_time, smei_www_skymaps, usno_body, vu_check, vu_coronagraph
vu_earthskymap, vu_extract, vu_get_page, vu_getdata, vu_header, vu_image, vu_insitu
vu_movie, vu_quick_movie, vu_remoteview, vu_vox_write, www_help_crosslinks
www_help_files, www_help_get_header, www_help_get_info
SIDE EFFECTS:
Internal data are maintained internally (a copy of FileParts)
RESTRICTIONS:
FileSpec containing relative directory specifications
(e.g. [], [-] on VMS, or . and .. on Win32 and Unix), cause
problems for GetFileSpec. If these are present, then /parse
should be used to remove them.
PROCEDURE:
> Parsing: the existence check for the directory is done using CheckDir.
The fully-parsed directory returned by CheckDir is used, so the parse
keyword can be used to expand environment variables, e.g.
SetFileSpec, '$dat/tmo/*.nic', /parse
print, GetFileSpec()
would print (provided the directory exists):
/big/oftp/dat/tmo/*.nic
> If a wildcard is specified in the file name then only the directory
is parsed.
> For an existing file the full file name is obtained using FindAllFiles.
If the file does not exist, an attempt is made to open
the file with OPENW to establish that the syntax is valid;
FindAllFiles is used to obtain the full file name before closing and
deleting the file again.
> The filenames are split up into parts by a series of strposn calls
> FileSpec='' (null string) is interpreted as the current working directory,
and will always return status=1.
MODIFICATION HISTORY:
DEC-1997, Paul Hick (UCSD/CASS)
FEB-2002, Paul Hick (UCSD/CASS)
Remove bug which caused problems when multidimensional arrays
of filenames were processed.
JAN-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
If a wildcard (*) is specified in the filename part then only the
directory is checked when the /parse keyword is set.
[Previous]
[Next]
NAME:
SetRange
PURPOSE:
Set range of values, checking against a default range
CATEGORY:
Tricks
CALLING SEQUENCE:
new = SetRange(default, range [, /lower_limit])
INPUTS:
default array[2]; type: any
upper and lower limits on allowed values
OPTIONAL INPUT PARAMETERS:
range scalar or array[2]
range to be checked against 'default'
/lower_limit if set then a scalar 'range' is interpreted as
a lower limit (default is upper limit)
OUTPUTS:
new array[2]
updated range of values
if 'range' undefined then 'new' is set to 'default'
if 'range' is scalar then new = [range,default[1]] is
returned (/lower_limit is set), or new = [default[0],range[1]]
is returned (/lower_limit not set
Always 'range' is constrained to stay inside the limits set by 'default'
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
InitVar
CALLED BY:
RemoteView_rgbo
PROCEDURE:
Trivial
MODIFICATION HISTORY:
JUN-2000, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
sgp4_eph
PURPOSE:
Get location of Coriolis spacecraft in ECI coordinates
CATEGORY:
gen/idl/ephem
CALLING SEQUENCE:
FUNCTION sgp4_eph, tt_obs, body_, $
km = km , $
location= location , $
source = source , $
precess = precess
INPUTS:
tt_obs array[n]; type: time structure
UT time
OPTIONAL INPUTS:
body_ scalar; type: string; default: 'sat27640'
spacecraft designation
The default sat27640 is Coriolis.
km=km if set, return distance in km instead of AU
source=source scalar; type: string; default: who_am_i(/dir)/sgp
directory where TLE file is located (by default the
subdir sgp of the dir where this file is located.
/precess precess position and velocity vector to J2000 coordinates
(used by big_eph)
OUTPUTS:
rr[6,n] location and velocity
Coordinates are valid for the current epoch and equinox,
unless /precess is set (see PROCEDURE).
If /location is set only r[0:2,n] is returned.
If the required file with TLEs is not found
then the output vector contains NaNs.
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
ArrayLocation, BadValue, CvPrecess, FILEPATH, InitVar, SuperArray, TimeFixYear
TimeLimits, TimeOp, TimeSet, TimeUnit, hide_env, sgp_alias, txt_read, who_am_i
CALLED BY:
big_eph, sgp4_orbit_axis, smei_frm_cvhdr, smei_frm_where, smei_sgp4_orbits
smei_sgp4_quat
PROCEDURE:
The file with orbital elements is 'body.txt' i.e. sat27640.txt for
Coriolis. The file is looked for in the subdirectory sgp of the
directory where this source code is located. Used keyword 'source'
to point to another subdirectory.
Orbital elements can be retrieved from www.space-track.org
Excerpt from http://celestrak.com/columns/v02n01/:
"As it turns out, the NORAD SGP4 orbital model takes the standard
two-line orbital element set and the time and produces an ECI
position and velocity for the satellite. In particular, it puts it
in an ECI frame relative to the "true equator and mean equinox of
the epoch" of the element set. This specific distinction is
necessary because the direction of the Earth's true rotation axis
(the North Pole) wanders slowly over time, as does the true direction
of the vernal equinox. Since observations of satellites are made
by stations fixed to the Earth's surface, the elements generated
will be referenced relative to the true equator. However, since the
direction of vernal equinox is not tied to the Earth's surface, but
rather to the Earth's orientation in space, an approximation must
be made of its true direction. The approximation made in this case is
to account for the precession of the vernal equinox but to ignore the
nutation (nodding) of the Earth's obliquity (the angle between the
equatorial plane and the ecliptic)."
MODIFICATION HISTORY:
MAR-2005, Paul Hick (UCSD/CASS)
SEP-2005, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Reduced memory requirements by extracting TLE bracketing the
input time range tt_obs
[Previous]
[Next]
NAME:
sgp4_orbit_axis
PURPOSE:
Gets ECI coordinates for Coriolis orbital axis (i.e. the normal
to the orbital plane, close to the sunward direction).
CATEGORY:
camera/idl/toolbox
CALLING SEQUENCE:
FUNCTION sgp4_orbit_axis, tt, $
degrees = degrees , $
to_sphere = to_sphere , $
precess = precess
INPUTS:
tt array; type: time structure
OPTIONAL INPUT PARAMETERS:
/to_sphere if set return spherical (RA,dec) coordinates
/degrees if set, angles are in degrees (default: radians)
/precess (passed to sgp4_eph)
precess to J2000 coordinates
OUTPUTS:
rr array[3,*]; type: double
coordinates of a unit vector along the normal
to the SMEI orbital plane in rectangular (/to_sphere
NOT set) or spherical (RA,dec) coordinates
(/to_sphere) SET.
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
AngleRange, CV_COORD, InitVar, IsTime, TimeOp, TimeSet, TimeSystem, TimeUnit, gridgen
sgp4_eph, vectorproduct
CALLED BY:
cv, smei_sgp4_orbits, smei_zld_weekly
PROCEDURE:
Viewed from the Sun SMEI circles the Earth close to the terminator
in anti-clockwise direction (going north towards the east (dusk
terminator) and south in the west (dawn terminator).
The normal, defined as the cross produce of position and velocity
vector points towards the Sun.
MODIFICATION HISTORY:
APR-2009, Paul Hick (UCSD/CASS)
MAR-2011, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added more documentation.
[Previous]
[Next]
NAME:
sgp4_orbit_period
PURPOSE:
CATEGORY:
CALLING SEQUENCE:
INPUTS:
OPTIONAL INPUT PARAMETERS:
OUTPUTS:
OPTIONAL OUTPUT PARAMETERS:
INCLUDE:
@compile_opt.pro ; On error, return to caller
EXTERNAL:
CALLS: ***
BadValue, SyncArgs, sgp4_tle
CALLED BY:
smei_sgp4_orbits
PROCEDURE:
MODIFICATION HISTORY:
JUNE-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
sgp4_tle
PURPOSE:
Extract orbital elements covering bracketing tt_obs from
tle data base file
CATEGORY:
gen/idl/ephem
CALLING SEQUENCE:
status = sgp4_tle(tt_obs,body_,source=source,tle=tle,tt_tle=tt_tle)
INPUTS:
tt_obs array[n]; type: time structure
UT time
OPTIONAL INPUTS:
body_ scalar; type: string; default: 'sat27640'
spacecraft designation
The default sat27640 is Coriolis.
source=source scalar; type: string; default: who_am_i(/dir)/sgp
directory where TLE file is located (by default the
subdir sgp of the dir where this file is located.
OUTPUTS:
status scalar; type: integer
0: the ephemeris find is not found or there
is a read error. In this case tle and tt_tle
won't exist
1: tles found
tle=tle array[2,ntle]; type: string
tle (each tle consists of two records)
the tles will bracket the input time period tt_obs
tt_tle array[ntle]; type: time structure
times extracted from tle records
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
ArrayLocation, FILEPATH, InitVar, SuperArray, TimeFixYear, TimeLimits, TimeOp, TimeSet
TimeUnit, hide_env, sgp_alias, txt_read, who_am_i
CALLED BY:
sgp4_orbit_period
PROCEDURE:
The file with orbital elements is 'body.txt' i.e. sat27640.txt for
Coriolis. The file is looked for in the subdirectory sgp of the
directory where this source code is located. Used keyword 'source'
to point to another subdirectory.
Orbital elements can be retrieved from www.space-track.org
MODIFICATION HISTORY:
DEC-2005, Paul Hick (UCSD/CASS)
Extracted from sgp4_eph
[Previous]
[Next]
NAME:
sgp_alias
PURPOSE:
Translates aliases for satellite names to their sgp names
CATEGORY:
gen/idl/ephem
CALLING SEQUENCE:
name = alias_sgp(body)
INPUTS:
body array: type: string
alias for satellite name
OUTPUTS:
name array: type: string
sgp name for satellite
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLED BY:
big_body, big_eph, sgp4_eph, sgp4_tle
PROCEDURE:
Currently only aliases 'coriolis','windsat' and 'smei' are
converted to sgp name 'sat2740'
MODIFICATION HISTORY:
JUN-2006, Paul Hick (UCSD/CASS)
SEP-2007, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Bugfix? Unidentified bodies would be returned in lowercase.
Now they remain untouched.
[Previous]
[Next]
NAME:
sgp_body
PURPOSE:
Get list of bodies for which SGP ephemerides are available
CATEGORY:
smei/gen/idl/ephem
CALLING SEQUENCE:
sgp_nams = sgp_body([body, files=files, numbers=numbers, count=count])
OPTIONAL INPUT PARAMETERS:
body scalar or array; type: integer or string
integer: list of body numbers
string : list of body names
only valid entries on this list are processed
If not specified then all bodies are processed
OUTPUTS:
names array[count]; type: string
list of body names for which ephemeris files
are available; if none exist (count=0) then names=''
OPTIONAL OUTPUT PARAMETERS:
count=count scalar; type: integer
# requested bodies for which ephemeris files are present
i.e. # elements in input 'body' with invalid entries removed
file=file array[count]; type: string
file names of the ephemeris files; null-string if count=0
number=number array[count]; type: integer
body numbers; -1 if count=0
index=index array[count]; type: integer
index numbers between 0, and total_count-1; -1 if count=0
total_count=total_count
scalar; type: integer
total # bodies for which ephemeris files are present
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
FILEPATH, GetFileSpec, IsType, hide_env, where_common, who_am_i
CALLED BY:
RemoteView_BodyLoc, big_body, big_eph
PROCEDURE:
> Currently only 9P/Tempel (comet Tempel 1 around 'deep impact' time) is available
> The SGP files are searched for in the subdirectory 'sgp' of the directory
where this procedure is located.
MODIFICATION HISTORY:
JUL-2005, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Based on usno_body()
[Previous]
[Next]
NAME:
smei_coriolis
PURPOSE:
Returns time at which Coriolis was in specified orbit
CALLING SEQUENCE:
FUNCTION smei_coriolis, tt_or_orbit , $
orbital_period = orbital_period, $
number = number , $
fraction = fraction , $
doublex = doublex
INPUTS:
tt_or_orbit array; type: time structure or any numerical type
if input are times then output is the
orbit number; if input is numerical then
output is the orbit time.
OPTIONAL INPUTS:
/orbital_period return orbital period
if set then the orbital period at the specified
time or orbit number is returned
(if tt_or_orbit is not specified then
tt_or_orbit=0 is assumed)
/number these three keywords are used only if a time
/fraction structure is specified as input (the keywords
/doublex are passed to smei_orbit_get.
OUTPUTS:
smei_coriolis array; type: numerical or time structure
orbit number or orbit time (depending on input
tt_or_orbit
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
FILEPATH, InitVar, IsTime, IsType, TimeGet, TimeLInterpol, TimeOp, TimeSet
smei_orbit_get, smei_orbit_set, timeposn, txt_read, who_am_i
CALLED BY:
FUNCTION smeilatest lastorbit, TimeGet, TimeSet, smei_frm_findpoint
smei_getfile, smei_orbit_stats, smei_star_fit, smei_time, smei_www_skymaps
PROCEDURE:
Orbit n0(=0) starts at t0 = 2002/12/31 23:56:41.900.
The orbital period at this time was p0=0.0705612268519d0 days (6096.490 s),
and has been decreasing since with dp=0.084 msec per orbit.
(0.42s reduction in SMEI period per 365 days).
The effective orbital period for orbit n is p0-(n-n0)*dp.
The start times for each orbit becomes:
t(n0+0) = t0
t(n0+1) = t(n0+0)+p0-1*dp
t(n0+2) = t(n0+1)+p0-2*dp
...
t(n0+n) = t(n0+n-1)+p0-n*dp = t0+n*p0-0.5*n*(n+1)*dp
MODIFICATION HISTORY:
JUN-2004, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
smei_fts_read
PURPOSE:
Read Fits file
CALLING SEQUENCE:
status = smei_fts_read(File, Array, errormessage=errormessage)
INPUTS:
File string file name
OPTIONAL INPUT PARAMETERS:
header=header
if set then only the Fits header is read and returned
in 'Hdr'. The data array is set to -1.
OUTPUTS:
status 0: some error occurred (check 'errormessage')
1: file properly read
Array array[n,m]
2D array of requested type
if something goes wrong or /header was set then
Array = -1 is returned
Hdr Fits header array
OPTIONAL OUTPUT PARAMETERS:
errormessage
scalar; type: string
Contains null string if file was read succesfully
Contains error message if an error occurred
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
HEADFITS, InitVar, IsType, READFITS, do_file, gunzip_file
PROCEDURE:
Wrapper for the readfits.pro procedure in SSW.
The SSW version decompresses Fits file in place, which won't work
if the gzipped version is stored on a read-only file system.
This wrapper unzips the file into a temporary file using
gunzip_file and takes care of cleaning up the temporary file.
MODIFICATION HISTORY:
JUL-2004, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
smei_sgp4_orbits
PURPOSE:
Build list of start times for all orbits using TLE data base.
CALLING SEQUENCE:
PRO smei_sgp4_orbits, input_sgp4_file, new=new, smeitree=smeitree, silent=silent
INCLUDE:
@compile_opt.pro ; On error, return to caller
INPUTS:
input_sgp4_file
existing file with start times.
By default the file in the SMEI tree is used
(if /new is NOT set)
OPTIONAL INPUTS:
/new creates a new file from scratch. In this case
input_sgp4_file is ignored
/smeitree The output file is created as $TUB/smei_sgp4_orbits.tmp
If /smeitree is set then the file in $TUB is copied to
the SMEI master tree and to the SMEI tree on smei.ucsd.edu
(requires that env $SMEIMASTER is defined)
CALLS: ***
AngleRange, CV_COORD, FILEPATH, INTERPOL, InitVar, TimeGet, TimeOp, TimeSet, TimeUnit
big_eph, destroyvar, hide_env, ra_fictitious_sun, sgp4_eph, sgp4_orbit_axis
sgp4_orbit_period, sphere_distance, txt_read, who_am_i
PROCEDURE:
sgp4_eph returns rectangular ECI coordinates relative to the
current equinox. Essentially this means equatorial coordinates
relative to the current equinox. So the declination is
effectively the geographic latitude.
Currently (March 2011) this procedure is called as part of
smei_pipeline.sh (executed hourly as cronjob on smeidb).
The file is used in IDL only by the procedure smei_coriolis.pro.
In Fortran the only function calling it is smei_orbit_info2.f.
Content of file:
1. SMEI orbit number
2. Orbit start time in format YYYY_DOY_hhmmssmss
The orbital start time in format hh:mm:ss.mss
Defined as the time Coriolis crosses a fixed geographic
latitude (~ -31.1 degrees; close to the latitude of the
SAA) going north.
3. Orbital period, defined as time difference between two
successive orbital start times
4. Orbital period used in sgp4 software
I think this is some sort of Keplerian orbital period;
not particulary useful.
5. Precision of geographic latitude calculation
The remaining columns are related to the normal of the SMEI orbital
plane (pointing towards the Sun).
6. Solar elongation (in degrees) of the normal
7. RA (in degrees) of the fictitious Sun
This progresses stricly linear with UT going through
360 degrees in 365.25 days (one Julian year).
This is approximate, but good enough for government work)
8. RA difference (J2000, in degrees) of the normal with the
RA of the fictitious Sun.
9. Declination of the normal (J2000, in degrees)
MODIFICATION HISTORY:
JAN-2006, Paul Hick (UCSD/CASS)
OCT-2006, Paul Hick (UCSD/CASS)
Replaced NewcombSun by big_eph calls
MAR-2007, Paul Hick (UCSD/CASS)
Eliminated big_eph. Now only sgp4_eph is used.
APR-2007, Paul Hick (UCSD/CASS)
Added check to avoid calculating start times past
the time of the last TLE available to sgp4_eph.
APR-2009, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added column for elongation of normal to Coriolis
of orbital plane.
MAR-2011, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Added columns for RA,dec of orbit normal
[Previous]
[Next]
NAME:
smei_sgp4_quat
PURPOSE:
Calculates quaternion for nominal SMEI attitude at indicated times.
CATEGORY:
CALLING SEQUENCE:
FUNCTION smei_sgp4_quat, tt
INPUTS:
tt array; type: time structure
OPTIONAL INPUT PARAMETERS:
OUTPUTS:
qq array[4,*]; type: double
spacecraft quaternion
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
CV_COORD, CvRotation, sgp4_eph
CALLED BY:
qImage_cw_Where, smei_cam_quaternion
PROCEDURE:
Should match the quaternion specified in the SMEI frame header.
MODIFICATION HISTORY:
JUL-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
StereoAOrbit
PURPOSE:
Calculate position of Stereo A (Ahead)
CATEGORY:
smei/gen/idl/ephem
CALLING SEQUENCE:
FUNCTION StereoAOrbit, T, degrees=degrees
INPUTS:
T array[n]; type: time structure
times at which s/c positions are needed
OPTIONAL INPUT PARAMETERS:
/degrees if set then angles are output in degrees
(default: radians)
OUTPUTS:
Result array[3,*]; type: float
J2000 ecliptic longitude (deg/rad), latitude
(deg/rad) and distance (AU).
The angular units depend on the setting of /degrees
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
BadValue, KeplerOrbit, TimeGet, TimeSet, ToDegrees
CALLED BY:
big_eph
RESTRICTIONS:
The precision is probably about 0.1 degrees in ecliptic longitude,
provided orbital elements are added as needed (once or twice year?)
PROCECURE:
From http://ssd.jpl.nasa.gov/horizons.cgi
(J2000.0 Orbital Elements)
Elements cover four periods between 2007/01/01 and 2007/09/30:
2007/01/01 -> 2007/01/31
2454115.500000000 = A.D. 2007-Jan-15 00:00:00.0000 (CT)
EC= 9.509555173766652E-03 QR= 9.620747268989945E-01 IN= 1.306235954146905E-01
OM= 2.380953113698972E+02 W = 3.355229542907300E+02 Tp= 2454210.608155566733
N = 1.029594704279364E+00 MA= 2.620771466946642E+02 TA= 2.609996629128498E+02
A = 9.713114668842425E-01 AD= 9.805482068694904E-01 PR= 3.496521480770163E+02
2007/02/01 -> 2007/02/28
2454147.500000000 = A.D. 2007-Feb-16 00:00:00.0000 (CT)
EC= 6.279052167650651E-03 QR= 9.596197332195503E-01 IN= 1.213139724936570E-01
OM= 2.169765459780858E+02 W = 5.374894575771112E+01 Tp= 2454265.510775187053
N = 1.038608771871410E+00 MA= 2.374329737152352E+02 TA= 2.368291467561132E+02
A = 9.656833090947861E-01 AD= 9.717468849700218E-01 PR= 3.466175231231067E+02
2007/03/01 -> 2007/03/31
2454175.500000000 = A.D. 2007-Mar-16 00:00:00.0000 (CT)
EC= 6.226246274394636E-03 QR= 9.577018334129234E-01 IN= 1.234975641202794E-01
OM= 2.149185709343068E+02 W = 7.828787777683904E+01 Tp= 2454286.911843170412
N = 1.041813256894421E+00 MA= 2.439296648101152E+02 TA= 2.432909800026552E+02
A = 9.637020798975118E-01 AD= 9.697023263821002E-01 PR= 3.455513717238894E+02
2007/04/01 -> 2007/10/01
2454253.500000000 = A.D. 2007-Jun-02 00:00:00.0000 (CT)
EC= 5.917966070544746E-03 QR= 9.565996862733112E-01 IN= 1.251469150146348E-01
OM= 2.143572837656983E+02 W = 9.239562034525594E+01 Tp= 2454299.754766134545
N = 1.044099914070154E+00 MA= 3.117054026536591E+02 TA= 3.111966164343318E+02
A = 9.622945125484443E-01 AD= 9.679893388235775E-01 PR= 3.447945882847869E+02
2007/10/01 -> now
2454466.500000000 = A.D. 2008-Jan-01 00:00:00.0000 (CT)
EC= 5.655394382946006E-03 QR= 9.564978161375505E-01 IN= 1.253836830038676E-01
OM= 2.142571411361414E+02 W = 9.225614784090398E+01 Tp= 2454299.536585085094
N = 1.044680486714094E+00 MA= 1.744234215566499E+02 TA= 1.744859573944121E+02
A = 9.619379546429810E-01 AD= 9.673780931484115E-01 PR= 3.446029715098184E+02
2011/01/21 -> 2012/01/21
2455583.500000000 = A.D. 2011-Jan-22 00:00:00.0000 (CT)
EC= 5.649610774525156E-03 QR= 9.563712745374616E-01 IN= 1.256261457055498E-01
OM= 2.140504362161804E+02 W = 9.348075068567380E+01 Tp= 2455678.680902264081
N = 1.044896949233696E+00 MA= 2.605457655988884E+02 TA= 2.599079145507906E+02
A = 9.618050989876956E-01 AD= 9.672389234379295E-01 PR= 3.445315830082727E+02
2012/01/21 -> now
2455948.500000000 = A.D. 2012-Jan-22 00:00:00.0000 (CT)
EC= 5.705938568515530E-03 QR= 9.563266675804051E-01 IN= 1.257640058659871E-01
OM= 2.139833070619798E+02 W = 9.406913424182217E+01 Tp= 2456023.716625969391
N = 1.044881265762684E+00 MA= 2.814075566505216E+02 TA= 2.807657290779928E+02
A = 9.618147233058820E-01 AD= 9.673027790313589E-01 PR= 3.445367543624463E+02
JDCT Epoch Julian Date, Coordinate Time
EC Eccentricity, e
QR Periapsis distance, q (AU)
IN Inclination w.r.t xy-plane, i (degrees)
OM Longitude of Ascending Node, OMEGA, (degrees)
W Argument of Perifocus, w (degrees)
Tp Time of periapsis (Julian day number)
N Mean motion, n (degrees/day)
MA Mean anomaly, M (degrees)
TA True anomaly, nu (degrees)
A Semi-major axis, a (AU)
AD Apoapsis distance (AU)
PR Orbital period (day)
MODIFICATION HISTORY:
AUG-2007, George Megally (UCSD/CASS; gmegally@ucsd.edu)
AUG-2007, John Clover (UCSD/CASS; jclover@ucsd.edu)
JUL-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Split up into seperate routines for A and B.
Updated orbital elements from Horizon (almost, but not quite the
same as the original ones).
JUN-2009, John Clover (UCSD/CASS; jclover@ucsd.edu)
Fixed time structure to cover the whole of the end of the day between
elements.
[Previous]
[Next]
NAME:
StereoBOrbit
PURPOSE:
Calculate position of Stereo B (Behind)
CATEGORY:
smei/gen/idl/ephem
CALLING SEQUENCE:
FUNCTION StereoBOrbit, T, degrees=degrees
INPUTS:
T array[n]; type: time structure
times at which s/c positions are needed
OPTIONAL INPUT PARAMETERS:
/degrees if set then angles are output in degrees (default: radians)
OUTPUTS:
Result array[3,*]; type: float
J2000 ecliptic longitude (deg/rad), latitude
(deg/rad) and distance (AU).
The angular units depend on the setting of /degrees
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
BadValue, KeplerOrbit, TimeGet, TimeSet, ToDegrees
CALLED BY:
big_eph
RESTRICTIONS:
The precision is probably about 0.1 degrees in ecliptic longitude,
provided orbital elements are added as needed (once or twice year?)
PROCECURE:
From http://ssd.jpl.nasa.gov/horizons.cgi
(J2000.0 Orbital Elements)
Elements cover four periods between 2007/01/01 and 2007/09/30:
2007/01/01 -> 2007/01/31
2454115.500000000 = A.D. 2007-Jan-15 00:00:00.0000 (CT)
EC= 2.717512429419864E-02 QR= 9.315766343405397E-01 IN= 2.062856692554812E-01
OM= 1.265504225590081E+02 W = 2.009817559818071E+02 Tp= 2453977.546381154098
N = 1.051787957703235E+00 MA= 1.450979550234674E+02 TA= 1.468311244708070E+02
A = 9.575995203295605E-01 AD= 9.836224063185813E-01 PR= 3.422743123871886E+02
2007/02/01 -> 2007/02/28
2454147.500000000 = A.D. 2007-Feb-16 00:00:00.0000 (CT)
EC= 4.699285093170608E-02 QR= 9.871128055468245E-01 IN= 2.992287472926523E-01
OM= 3.392409078493881E+02 W = 1.283202740400959E+02 Tp= 2454109.145052516367
N = 9.349709833378660E-01 MA= 3.586076296454760E+01 TA= 3.917087846701419E+01
A = 1.035787408847744E+00 AD= 1.084462012148664E+00 PR= 3.850386872058772E+02
2007/03/01 -> 2007/03/31
2454175.500000000 = A.D. 2007-Mar-16 00:00:00.0000 (CT)
EC= 4.372120282913373E-02 QR= 9.936734937715849E-01 IN= 3.079140638493386E-01
OM= 3.385303364716559E+02 W = 1.396338867376834E+02 Tp= 2454119.296489763539
N = 9.304977044270033E-01 MA= 5.229723725577440E+01 TA= 5.639454403113316E+01
A = 1.039104387456201E+00 AD= 1.084535281140816E+00 PR= 3.868897239479882E+02
2007/04/01 -> 2007/10/01
2454253.500000000 = A.D. 2007-Jun-02 00:00:00.0000 (CT)
EC= 4.182627806223717E-02 QR= 9.986984397920566E-01 IN= 2.942094890131228E-01
OM= 3.365510702179411E+02 W = 1.467482264878249E+02 Tp= 2454124.112501636613
N = 9.262301226788787E-01 MA= 1.198425984820785E+02 TA= 1.238910903027097E+02
A = 1.042293706168792E+00 AD= 1.085888972545528E+00 PR= 3.886723085174492E+02
2007/10/01 -> now
2454466.500000000 = A.D. 2008-Jan-01 00:00:00.0000 (CT)
EC= 4.143096626093998E-02 QR= 9.996061655975762E-01 IN= 2.943195765731059E-01
OM= 3.364601578200525E+02 W = 1.467863556683245E+02 Tp= 2454512.857852065004
N = 9.255412455738544E-01 MA= 3.170938958574695E+02 TA= 3.137364080607738E+02
A = 1.042810825735152E+00 AD= 1.086015485872728E+00 PR= 3.889615959543680E+02
JDCT Epoch Julian Date, Coordinate Time
EC Eccentricity, e
QR Periapsis distance, q (AU)
IN Inclination w.r.t xy-plane, i (degrees)
OM Longitude of Ascending Node, OMEGA, (degrees)
W Argument of Perifocus, w (degrees)
Tp Time of periapsis (Julian day number)
N Mean motion, n (degrees/day)
MA Mean anomaly, M (degrees)
TA True anomaly, nu (degrees)
A Semi-major axis, a (AU)
AD Apoapsis distance (AU)
PR Orbital period (day)
MODIFICATION HISTORY:
AUG-2007, George Megally (UCSD/CASS; gmegally@ucsd.edu)
AUG-2007, John Clover (UCSD/CASS; jclover@ucsd.edu)
JUL-2008, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Split up into seperate routines for A and B.
Updated orbital elements from Horizon (almost, but not quite the
same as the original ones).
JUN-2009, John Clover (UCSD/CASS; jclover@ucsd.edu)
Fixed time structure to cover the whole of the end of the day between
elements.
[Previous]
[Next]
NAME:
Stretch_Colors
PURPOSE:
Reverse color table
CATEGORY:
Annoying
CALLING SEQUENCE:
PRO Stretch_Colors, reverse=reverse, silent=silent
INPUTS:
(none)
OPTIONAL INPUT PARAMETERS:
/reverse if set then reverse the color table
OUTPUTS:
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
InitVar, STRETCH
PROCEDURE:
MODIFICATION HISTORY:
MAR-2009, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
strposn
PURPOSE:
Locates a substring in an array of strings and returns
string arrays for preceding and trailing parts. By default, the
substring is removed, but can be retained using keywords
TrailingFront or LeadingBack
CATEGORY:
string manipulation
CALLING SEQUENCE:
FUNCTION strposn, Strings, SubStr, Front, Back, $
Last = Last , $
frontdefault = FrontDefault , $
trailingfront = TrailingFront , $
leadingback = LeadingBack
INPUTS:
Strings string array or scalar (read-only)
Substr string scalar or array (read-only)
If not specified the scalar Substr=',' (comma) is used
Substring(s) to be searched for. If more than one
substring is specified to position of the string with
the lowest (highers if /last is set) index is returned.
OPTIONAL INPUT PARAMETERS:
/last if set, search is for the last occurence of Substr
(similar to rstrpos; default is to search for the
first occurence, similar to strpos)
/frontdefault if set, strings which do not contain Substr
are returned in the Front array
(by default these strings will be returned in Back)
/trailingfront if set, and Substr is found it will be attached to
the end of the Front array (i.e. SubStr is used as a
terminator).
/leadingback if set, and Substr is found it will be attached to the
front of the Back array (i.e. Substr is used as a prefix)
OUTPUTS:
Index long integer array of same structure as Strings
Contains the starting positions of SubStr (set to -1
for strings not containing SubStr) i.e. same as for
strpos and rstrpos
Front string variable of same structure as Strings.
Contains the sections of the strings preceding SubStr
- includes Substr if Trailingfront is set
- includes strings not containing SubStr if
Frontdefault is set
Back string variable of same structure as Strings.
Contains the sections of the strings following SubStr
- includes Substr if Leadingback is set
- includes strings not containing SubStr unless
Frontdefault is set
OPTIONAL OUTPUT PARAMETERS:
(None)
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
InitVar, REVERSE, SyncDims, UNIQ
CALLED BY:
GetFileSpec, PutFileSpec, SetFileSpec, smei_TimePosn, timeposn
www_help_crosslinks, www_help_make, www_help_names, www_help_tree
SIDE EFFECTS:
TrailingFront and LeadingBack are mutually exclusive. If both are
present TrailingFront takes precedence.
RESTRICTIONS:
None
PROCEDURE:
MODIFICATION HISTORY:
DEC-1997, Paul Hick (UCSD/CASS)
MAR-2003, Paul Hick (UCSD/CASS)
Improved efficiency. Removed one of the two remaining explicit DO-loops,
made the second more compact.
DEC-2007, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
Argument Substr can now be an array (used to be scalar only)
[Previous]
[Next]
NAME:
strreverse
PURPOSE:
Reverse order of chars in string
CATEGORY:
gen/idl/toolbox
CALLING SEQUENCE:
FUNCTION strreverse, str
INPUTS:
str scalar or array; type: string
OUTPUTS:
result same as input with order of chars
in all strings reversed
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
REVERSE
CALLED BY:
TimePosn_test, qsmei_sky_pick, smei_filename
MODIFICATION HISTORY:
DEC-2007, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
SubArray
PURPOSE:
Extract/add/multiply subarrays in a multi-dimensional array
CATEGORY:
Array strangling
CALLING SEQUENCE:
R = SubArray(L) Extract subarray with dimension=0, element=0
R = SubArray(L,add=1) Add 1 to subarray with dimension=0, element=0
INPUTS:
L any multi-dimensional array
OPTIONAL INPUT PARAMETERS:
dimension=dimension scalar; type: integer
identifies one of the dimensions, 0,..,(size(L))[0]-1
/lastdimension selects the trailing dimension of L, i.e.
equivalent to dimension=(size(L))[0]-1
(/lastdimension takes precedence over the dimension keyword)
If neither 'dimension' nor 'lastdimension' are used, then dimension=0 is assumed
element=element scalar; type: integer
identifies one of the elements in the selected dimension,
0,..,(size(L))[Dimension+1]-1
/lastelement selects the last element of the selected dimension, i.e.
equivalent to element=(size(L))[Dimension+1]-1.
If neither 'element' nor 'lastelement' are used, then element=0 is assumed
add=add scalar or array with same # elements as the subarray identified
by (dimension, element). 'Add' will be added to the subarray.
multiply=multiply scalar or array with same # elements as the subarray identified
by (dimension, element). 'multiply' will be multiplied to
the subarray.'multiply' is executed prior to 'add'
replace=Replace replaces elements
Takes precedence over 'add' and 'multiply'
/clear sets elements to zero (numerical input) or null-string (string input)
Take precedence over 'multiply'
type=type makes a subarray of the appropriate type (filled with zeroes)
If neither of 'type','add','multiply','replace' and 'clear' is used, then
the selected subarray will be extracted.
OUTPUTS:
If 'add' or 'multipy' or 'replace', or 'clear' are used:
Input array with the selected subarray modified.
If 'type is set then a subarray of the selected type is returned
Otherwise:
Array with one dimension less than the input array, corresponding
to the selected subarray.
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
InitVar, IsType
CALLED BY:
AngleUnits, Carrington, CenterOfMass, CvPointOnLos, CvSky_Equatorial, CvSky_GSE
CvSky_GSEQ, CvSky_GSM, CvSky_Geographic, CvSky_Heliographic, CvSky_IHG
CvSky_Precess, CvSky_RTN, Distance2Line, EulerRotate, GeographicInfo, IPS_hlevel_w
Inside_Wedge, RotationMeasure, ScEarth, TMO_skymotion, ThomsonBrightness
TimeArray, TimeGet, cvsmei, img_read, jpl_parallax, jpl_phase, jpl_sizeofsun
lsqCircleFit, lsqQuadraticFit, put_logo, qImage_cw_BoxCosine, smei_ccd2sky
smei_radial2theta, smei_theta2radial, sphere_distance, sphere_smooth
vu_atlocation, vu_cvgrid, vu_fnc, vu_type_insitu
EXAMPLES:
L = indgen(2,3,4)
R = SubArray( L, dimension=1, element=2)
returns L[*,2,*] as an 2x4 array.
R = SubArray( L, dimension=1, element=2, add=1)
returns L with one added to L[*,2,*].
PROCEDURE:
Trivial
MODIFICATION HISTORY:
MAR-1998, Paul Hick (UCSD/CASS)
OCT-2004, Paul Hick (UCSD/CASS)
Modifications to allow string input for /clear and /replace
MAR-200r, Paul Hick (UCSD/CASS, pphick@ucsd.edu)
Added type=type keyword.
[Previous]
[Next]
NAME:
SuperArray
PURPOSE:
Add a dimension to an array
CATEGORY:
Array strangling
CALLING SEQUENCE:
FUNCTION SuperArray, L, N, lead=Lead, trail=Trail, after=After, before=Before
INPUTS:
L numerical scalar or array
N int scalar
# elements in the extra dimension
OPTIONAL INPUT PARAMETERS:
!!! dimensions are counted 1,..,size(L)
/lead new dimension is first dimension
/trail new dimension is last dimension
after=After
insert new dimension after dimension After
before=Before
insert new dimension before dimension Before
OUTPUTS:
Array with one dimension of N elements more than input variable
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
IsType
CALLED BY:
AngleUnits, ColorEloTimeBox, ColorPolarBox, ColorSkybox, CvSky, CvSky_Equatorial
CvSky_GSEQ, CvSky_GSM, CvSky_Geographic, CvSky_Heliographic, CvSky_IHG
CvSky_Precess, Distance2Line, Distance2Sun, EarthSky3DLoc, EarthTransit3DLoc
EulerRotate, FrameMoments, HOSOrbit, IPS_hlevel_w, MagnifyArray, PlotCoronagraph
PlotEarthSkymap, PlotEloTimeMap, RGBO_DepthCue, RGBO_Project, RemoteView
RemoteView_Display2D, RemoteView_Display3D, RemoteView_FOV
RemoteView_Init_Matrix, RemoteView_Init_View, RemoteView_StereoStates
SyncArgsSub, TMO_skymotion, TMO_tracksky, ThomsonLOSDensity, ThomsonLOSStep
TimeArray, TimeGet, big_eph, even_light, even_light_corrections, even_light_info
get_page, gridgen, img_read, jpl_mag, jpl_phase, lsqLinearFit, mpc_eph, mpc_orbit_eph
plot3darc, plotcolumns, put_logo, qImage_cw_BoxCosine, qImage_cw_ZEllipse
qView_FileFilter, qView_ModifyData, qView_PickFiles, qView_PlotSeries
qView_SubtractBase, sgp4_eph, sgp4_tle, smei_findpnt, smei_frm_flatfield
smei_frm_where, smei_radial2theta, smei_sky, smei_sky_track, sphere_distance
sphere_smooth, unitvectors, vu_atlocation, vu_check, vu_coronagraph
vu_earthskymap, vu_elotime, vu_extract, vu_lineofsight, vu_mean, vu_radialcut
vu_read, vu_syncgrid, vu_synopticmap, vu_timeseries, wedge_content
EXAMPLE:
R = SuperArray( indgen(3,4,5), 10, after=2)
creates an array R[3,4,10,5)
PROCEDURE:
The basic building block is the expression replicate(1,N)#L
Reform and transpose are used to control the array structure.
MODIFICATION HISTORY:
MAR-1998, Paul Hick (UCSD/CASS)
FEB-2000, Paul Hick (UCSD/CASS)
added handling of string arrays.
JUN-2003, Paul Hick (UCSD/CASS, pphick@ucsd.edu)
Fixed bug adding to array with trailing dummy dimension.
[Previous]
[Next]
NAME:
SyncArgs
PURPOSE:
Change a list of arguments (usually a combination of scalars and
arrays) to a list of arrays of equal size.
CALLING SEQUENCE:
PRO SyncArgs, A0,A1,A2,A3,A4,A5,A6,A7,A8,A9
INPUTS:
A0,...,A9 any type of argument
OUTPUTS:
A0,...,A9 arguments of same size
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
who_am_i
CALLED BY:
CombineRotations, EarthSky3DLoc, GeographicInfo, HOSOrbit, ThomsonLOSFar
ThomsonLOSRomb, ThomsonMidpointFar, ThomsonPDistance, ThomsonPDistanceFar
TimeMonth, TimeSet, TimeYDate, eclipsed_area, lsqCircleFit, lsqQuadraticFit
nrZBrent, nrZbrac, scalarproduct, sgp4_orbit_period, smei_TimePosn, smei_filename
smei_frm_mask, smei_sky_field, sphere_distance, sphere_great_arc, timeposn
vectorproduct
RESTRICTIONS:
A maximum of 10 arguments is permitted
PROCEDURE:
> Arguments that don't exist on input, will be created as type byte
(unless none of the arguments exist)
> If no arrays are present a list of scalars is returned
> Arguments are changed to arrays with the same structure as the largest
array in the list of arguments.
> If there is more than one such array, the first one in the list used
as target. The others are reformed to match the target type
> Scalars and arrays with one element will always be changed to match
the largest array.
> Arrays with size smaller than the target array are boosted to match
the target array only if the dimensions are the same as the leading
dimensions are the same as for the target array.
MODIFICATION HISTORY:
MAR-1995, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
SyncArgsSub
PURPOSE:
Intenal use by SyncArgs only
CALLING SEQUENCE:
PRO SyncArgsSub, A0, N, s
INCLUDE:
@compile_opt.pro ; On error, return to caller
CALLS: ***
SuperArray
MODIFICATION HISTORY:
MAR-1995, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
[Previous]
[Next]
NAME:
SyncDims
PURPOSE:
Reforms A to have the same size (scalar or array) as specified in Size
CATEGORY:
Toolbox
CALLING SEQUENCE:
SyncDims, A, sizeinfo = size(SomeVariable)
SyncDims, A, extendinfo = size(SomeVariable)
SyncDims, A, replicateinfo = [size(Array1), size(Array2),...]
INPUTS:
A scalar or array of any type
OPTIONAL INPUTS:
sizeinfo 'size and type' vector as returned by the IDL
'size' function (only the size information is used)
OUTPUTS:
sizeinfo:
A input array with structure modified to match SizeInfo
(note: array content is not tampered with)
extendinfo:
A
replicateinfo:
A 'size and type' vector, obtained by concatenating the
information from the input 'size and type' vectors.
CALLED BY:
AngleUnits, BZero, CenterOfMass, CvPointOnLos, Distance2Line, EulerRotate, FishEye
GetFileSpec, HammerAitoff, MercatorProj, NewcombSun, RemoteView_FOV_loc
SetFileSpec, TMO_skymotion, ThomsonLOSRomb, TimeInterpol, TimeSplit, TimeString
coord3to2, cvsmei, nrZbrak, qImage_cw_Transform, scalarproduct, smei_ccd2sky
smei_sky2cam, smei_sky2ccd, smei_sky_field, smei_zld_dumbbell, smei_zld_weekly
sphere_distance, strposn, vectorproduct, vu_atlocation
RESTRICTIONS:
No check is made that Size actually represents a valid size vector.
PROCEDURE:
Used usually before exiting a procedure to make sure that
input and output array have exactly the same structure.
MODIFICATION HISTORY:
DEC-1997, Paul Hick (UCSD/CASS; pphick@ucsd.edu)