Releases: ossama-othman/MaRC
MaRC 0.10
-
Fixed a regression in quadratic roots calculations that caused some areas of an Orthographic projection to incorrectly have data of value zero, as well as other coordinate calculations.
-
Blank areas of integer typed maps now contain the user-supplied
DATA_BLANK
value, if specified in the MaRC input file. This allows FITS image readers to easily identify areas of integer typed maps that lack data. -
Corrected a problem where MaRC's Simple Cylindrical projection could not handle the case where lower and upper longitudes in the map were the same, signifying a 360 degree range, resulting in only single longitude being mapped across all map pixels. MaRC now assumes the full 360 degree longitude range is being mapped if both the lower and upper longitude are the same, and issues a diagnostic message accordingly.
-
The
MU
plane no longer needs to have the sub-solar point specified. It was never needed for emission angle calculations. -
The
MU0
plane no longer needs to have the sub-observer point and range specified. They were never needed for incidence angle computations. -
Improved MaRC input file parser error reporting. The filename, line number and column containing the syntax error are now reported to the user.
-
Corrected handling of position angles explicitly marked as clockwise, i.e. "
CW
", in MaRC input files. They were erroneously treated as counter-clockwise position angles.
- The user-specific MaRC configuration file is now expected to be
$XDG_CONFIG_HOME/marc
, which is~/.config/marc
by default, to conform to the XDG Base Directory Specification. The old MaRC configuration filename~/.marc
is no longer supported.
-
Added command line option support. Try "
marc --help
". -
Improved logging by leveraging the fmt library as the underlying logging framework. This allows for faster logging, and log level differentiated output.
-
Corrected progress output for the Orthographic map projection so that the completion percentage is printed up to 100%.
-
MERCATOR
map entries in MaRC input files may now use options common to all MaRC map projections. -
Fixed a mosaic averaging regression that caused weighted and unweighted averaging to be disabled if either was selected.
-
Added support for generation of code coverage results for g++ builds. Try the following to generate the results:
./configure --enable-code-coverage
make check-code-coverage
- Replaced all uses of the MaRC-specific "bodycentric" and "bodygraphic" latitude terminology with the NASA NAIF recommended "planetocentric" and "planetographic", respectively.
MaRC 0.9.10
-
Reduced footprint of the MaRC program (
marc
) and library (libMaRC
). For example, including both the MaRC library and program, the static footprint was reduced by 28% for a 64-bit Linux build with g++ 7.2 when comparing total sizes returned by thesize
command. -
Data scaling values, i.e.
BSCALE
andBZERO
, as well as the physical data unit (BUNIT
) are now automatically written to the map FITS header when possible. This allows FITS reading and viewing software to automatically provide the actual physical value to the user, instead of forcing the user to manually scale the map data. Currently this only applies to single plane maps containing one of the MaRC virtual images (MU
,MU0
,PHASE
,LATITUDE
orLONGITUDE
).Maps with multiple planes currently write the scaling values as free-form text across several
HISTORY
cards in the FITS header instead of standaloneBSCALE
,BZERO
andBUNIT
cards. In this case, data scaling of map values to physical values must generally be performed manually. -
Corrected automatic offset calculation for
LONGITUDE
map planes when creating integer typed maps. Longitude values closer to 360 degrees are no longer cutoff. Be aware that an offset must be applied to convert from the map longitude value to the physical longitude value. See the generated map FITS header to obtain the offset (BZERO
) value. -
Further expanded the MaRC test suite (try "
make check
"). -
The
MU
,MU0
andPHASE
virtual images may now contain all cosine values i.e. the interval [-1, 1], and are no longer limited to positive values alone. There was no real need to drop the negative values. To obtain the old behavior where only cosine values [0, 1] were mapped set theDATA_MIN
keyword for theMU
,MU0
andPHASE
map plane entries in your MaRC input file to zero, e.g.:
PLANE:
DATA_MIN: 0
MU: ...
-
The
PHASE
virtual image no longer ties the existence of a datum to a positive cosine of the emission of the angle (μ), meaning cosine of phase angle data will also be plotted in areas of the map where μ < 0. -
Improved speed of
MU
,MU0
andPHASE
virtual image generation by up to 100% by dropping a redundant data "visibility" check. -
Slightly improved overall MaRC performance by leveraging link-time optimization on some platforms.
-
Corrected problem in conformal (Mercator and Polar Stereographic) maps that prevented calculation of latitudes for the entire map from completing in some cases.
-
Dropped references to "transverse" in documentation related to the Mercator projection. MaRC's Mercator projection is the regular variant not the transverse one.
-
Improved accuracy of conformal maps through root finding improvements.
-
Fixed memory violations in conformal maps.
MaRC 0.9.9
-
Data generated by the
MU
,MU0
,PHASE
,LATITUDE
andLONGITUDE
virtual images are now automatically offset and scaled by the largest power of 10 suitable for maximizing the number of significant digits retained when storing their floating point values in integer typed maps. For example,MU
image data, which has a range of [-1, 1], will be scaled and offset to a range of [0, 200] for a map withBYTE
(unsigned 8 bit integer) data, [-10000, 10000] for aSHORT
(signed 16 bit integer) data type map, and [-109, 109] forLONG
(signed 32 bit integer) typed maps.The virtual image data is only automatically scaled and/or offset for integer typed maps. They are not scaled or offset when creating maps with a floating point data type (
DATA_TYPE
ofFLOAT
orDOUBLE
).The necessary scale and offset needed to obtain the true values of these virtual images in integer typed maps is now automatically written to the map FITS header as well.
NOTE: The hard-coded scale value of 10000 for the
MU
,MU0
andPHASE
virtual images that existed in previous versions of MaRC has been removed for all map data types. Due to the automatic scaling that now occurs, the results will be the same forSHORT
map types, but not the other types. As described above, a better scaling factor and offset will be chosen. -
Corrected problem where flat-field correction would fail.
-
Improved accuracy of vector magnitude calculations by leveraging an implementation that avoids floating point underflow and overflow, as well as having extremely low floating point error.
-
Improved accuracy of quadratic equation root calculations by using an implementation that avoids loss of significant digits (i.e. catastrophic cancellation). This impacts the sky removal feature and the Orthographic map projection.
-
LONG
map types are now correctly written to the map FITS file with 32 bit signed integer data on all platforms, including those where the fundamental C languagelong
integer type is 8 bytes wide. -
Improved memory management.
- Better C++ exception safety.
- Reduced run-time memory requirements.
- Slightly improved performance due to less deep copies of large arrays.
-
Fixed inversion of source photo images from left to right and top to bottom.
-
Support for maps containing 64 bit signed integer data has been added. Set
DATA_TYPE
in your MaRC input file toLONGLONG
to use this feature. -
Fixed problem where negative data was not plotted in maps with a floating point data type.
-
Initial support for Doxygen based MaRC source code documentation generation is now available. Assuming Doxygen is installed, run "
make doxygen-doc
" from the top-level MaRC source directory to generate MaRC library and program source code documentation. Generated documentation will reside in thedoc/doxygen
directory.
MaRC 0.9.8
-
MaRC now requires C++14 conforming compilers. The '
configure
' script will attempt to detect and enable C++14 support in the C++ compiler in use. Verified to build with g++ 6.3 and Clang++ 3.9. -
Modernized the build infrastructure to leverage the latest versions of the GNU autotools (Autoconf, Automake and Libtool). This should provide better build support on more platforms, particularly recent ones.
-
MaRC now passes the static analysis scan run through Coverity.
-
Added better support for automated detection of CPU tuning compiler flags.
-
Updated LPGL license terms from 2.0 to 2.1.
-
Updated GFDL license terms from 1.2 to 1.3.
-
Minor optimizations.
-
Slight reduction in static footprint.
-
Fixed a
MaRC::Vector
iteration problem that prevented properly mapping images where the latitude and longitude at the optical axis ({LAT
,LON
}_AT_CENTER
) instead of the of body center ({SAMPLE
,LINE
}_CENTER
were given. Support for theLAT_AT_CENTER
andLON_AT_CENTER
MaRC input file keywords is still disabled, however, since the fix is still somewhat experimental.