Releases: ABRG-Models/morphologica
The Last C++17 Release
Summary
This is the very last release that will be C++17 compatible. Future releases (and the main development branch) will require your compiler to support C++20.
There are a few small differences since Beautifully Packaged 4 (which is now the first version of morphologica in microsoft/vcpkg!). Mostly this release is just for 'if you just have to have morphologica with a pre-C++20 compiler'.
What's Changed
- Optimizes the triangles form of HexGridVisual by @sebjameswml in #379
Full Changelog: v3.4.3...v3.4.4
Beautifully Packaged 4
Summary
Adds a trait_test improvement that is a) simpler (shorter) b) better (identifies std::array<int, 0>) and c) won't trip Visual Studio up
Full Changelog: v3.4.2...v3.4.3
Beautifully Packaged 3
Beautifully Packaged 2
Summary
Further work towards a well-packaged morphologica. These changes are all about housekeeping, dotting 'i's and crossing 't's.
What's Changed
- 356 tools modernize by @sebjameswml in #360
- Think the incbin.h thing is as simple as this. WIN32 only. by @sebjameswml in #361
- Corrects type of colour table constants by @sebjameswml in #365
- Rid me of fopen by @sebjameswml in #366
Full Changelog: v3.4...v3.4.1
The Beautifully Packaged Release
Summary
This release is part of an effort to clean up the use of third-party code in morphologica so that it is more suitable to be incorporated in packaging systems. The immediate motivation is to have it included in vcpkg see the vcpkg issue here and the associated morphologica issue here.
As part of this release (and the previous release) I have:
- Transferred nlohmann-json out of morphologica so that a proper external package is used
- Defaulted to using rapidxml from a third party package (though a bundled version is provided where a package is not available)
- Removed any use of OpenCV from morphologica (apart from some ifdeffed code in HdfData.h)
- Removed bundled copies of GL headers from morphologica (they were only used with Linux builds, and I have changed to using system-provided versions of the GL headers)
- Tidied up a couple of headers that don't need to be installed.
Removing OpenCV necessitated rewriting a test of Bezier curve drawing classes to use GraphVisual. Here is a screenshot demonstrating a rather nice Bezier curve-joining algorithm that I developed a while ago. The purple curve is the auto-join of the red and blue curves. Bezier control points are shown along with the computed curves.
What's Changed
- Remove OpenCV use from morphologica by @sebjameswml in #347
- Use system-installed rapidxml by default by @sebjameswml in #351
- Removes bundled GL/EGL headers by @sebjameswml in #352
- Sorts 3rd party Windows font support by @sebjameswml in #353
Full Changelog: v3.3.1...v3.4
The VoronoiVisual Release again
Summary
This is a very minor point release following v3.3. It simply turns off the compilation of a couple of buildtools by default (to help vcpkg efforts).
The rest of the release notes are (almost) a reproduction of those in The VoronoiVisual Release, v3.3.
This release adds a VisualModel
class called VoronoiVisual
for making 2.5D Voronoi surface plots of sets of points chosen at arbitrary locations. There are also two other new VisualModels: RingVisual
for drawing a coloured circular ring and LengthscaleVisual
to draw length-scale bars. It adds speed optimizations for GridVisual
and some general improvements (and documentation) of GraphVisual
. There are several improvements in core maths classes including morph::vvec
, morph::range
and the trait-testing code as well as a class for managing Boolean flags called morph::flags
.
I finally figured out how to save screenshots (Ctrl-s in any morphologica example) with the background filled in!
What's Changed
Improvements to morph::vvec
- Enables set_from(vec{1,2,3}) called on a vvec of vecs by @sebjameswml in #298
- Adds an extent method by @sebjameswml in #322
- Make possible vvec<vec<>> times vec<> by @sebjameswml in #325
- Consolidate vvec::set_from_onelonger templates by @sebjameswml in #329
- vvec shortest nonzero method by @sebjameswml in #332
- Dev/324 debug reduction by @sebjameswml in #326
Improvements to morph::Config
- Adds a getvec method to morph::Config by @sebjameswml in #299
Optimizations for morph::GridVisual
- Adds a fast reinitColour() method to GridVisual by @sebjameswml in #297
- Fix a couple of morph::Grid functions that should be const by @sebjameswml in #300
- GridVisual selected pixels border enhancements by @sebjameswml in #306
- Optimises initializeVerticesTris in GridVisual by @sebjameswml in #315
Improvements to morph::GraphVisual
, including better histograms
- Enable graphs of data with only a right axis by @sebjameswml in #302
- 318 graph visual setsize by @sebjameswml in #319
- 334 histo manual range by @sebjameswml in #335
An awesome new morph::VoronoiVisual
class for plotting surfaces over arbitrary points
- Surface plotting with arbitrarily distributed samples by @sebjameswml in #303
- 311 voronoi rectangular by @sebjameswml in #312
A nice new morph::flags
class
- Dev/309 flags by @sebjameswml in #310
Build improvements
- Rearranging to ensure compilation succeeds with or without libarmadillo by @sebjameswml in #317
- Lose -march=native which can cause problems by @sebjameswml in #301
- Updates the list of header files by @sebjameswml in #340
- Makes examples and tests building optional by @sebjameswml in #341
- Switches from bundled to packaged nlohmann-json by @sebjameswml in #343
- Fix potential build error by @sebjameswml in #342
- Some updates in the READMEs
Improvements to morph::range
- Adds a range for non scalar elements by @sebjameswml in #321
- Adds a str() method to morph::range by @sebjameswml in #305
Trait test improvements
- Add morph::is_copyable_fixedsize by @sebjameswml in #327
- Apply is_copyable_fixedsize in vvec by @sebjameswml in #328
Improvements in morph::Visual
- Adds a VisualModel-is-valid pointer test function by @sebjameswml in #331
- Fix
Visual::saveImage
so that it saves a non-transparent background colour by default.
Full Changelog: v3.2...v3.3.1
The VoronoiVisual Release
Summary
This release adds a VisualModel
class called VoronoiVisual
for making 2.5D Voronoi surface plots of sets of points chosen at arbitrary locations. There are also two other new VisualModels: RingVisual
for drawing a coloured circular ring and LengthscaleVisual
to draw length-scale bars. It adds speed optimizations for GridVisual
and some general improvements (and documentation) of GraphVisual
. There are several improvements in core maths classes including morph::vvec
, morph::range
and the trait-testing code as well as a class for managing Boolean flags called morph::flags
.
I finally figured out how to save screenshots (Ctrl-s in any morphologica example) with the background filled in!
What's Changed
Improvements to morph::vvec
- Enables set_from(vec{1,2,3}) called on a vvec of vecs by @sebjameswml in #298
- Adds an extent method by @sebjameswml in #322
- Make possible vvec<vec<>> times vec<> by @sebjameswml in #325
- Consolidate vvec::set_from_onelonger templates by @sebjameswml in #329
- vvec shortest nonzero method by @sebjameswml in #332
- Dev/324 debug reduction by @sebjameswml in #326
Improvements to morph::Config
- Adds a getvec method to morph::Config by @sebjameswml in #299
Optimizations for morph::GridVisual
- Adds a fast reinitColour() method to GridVisual by @sebjameswml in #297
- Fix a couple of morph::Grid functions that should be const by @sebjameswml in #300
- Optimises initializeVerticesTris in GridVisual by @sebjameswml in #315
Improvements to morph::GraphVisual
, including better histograms
- Enable graphs of data with only a right axis by @sebjameswml in #302
- GridVisual selected pixels border enhancements by @sebjameswml in #306
- 318 graph visual setsize by @sebjameswml in #319
- 334 histo manual range by @sebjameswml in #335
An awesome new morph::VoronoiVisual
class for plotting surfaces over arbitrary points
- Surface plotting with arbitrarily distributed samples by @sebjameswml in #303
- 311 voronoi rectangular by @sebjameswml in #312
A nice new morph::flags
class
- Dev/309 flags by @sebjameswml in #310
Build improvements
- Rearranging to ensure compilation succeeds with or without libarmadillo by @sebjameswml in #317
- Lose -march=native which can cause problems by @sebjameswml in #301
- Updates the list of header files by @sebjameswml in #340
- Makes examples and tests building optional by @sebjameswml in #341
- Switches from bundled to packaged nlohmann-json by @sebjameswml in #343
- Fix potential build error by @sebjameswml in #342
Improvements to morph::range
- Adds a range for non scalar elements by @sebjameswml in #321
- Adds a str() method to morph::range by @sebjameswml in #305
Trait test improvements
- Add morph::is_copyable_fixedsize by @sebjameswml in #327
- Apply is_copyable_fixedsize in vvec by @sebjameswml in #328
Improvements in morph::Visual
- Adds a VisualModel-is-valid pointer test function by @sebjameswml in #331
- Fix
Visual::saveImage
so that it saves a non-transparent background colour by default.
Full Changelog: v3.2...v3.3
The Colourful Release
Summary
This release brings you:
- Over 100 new, beautiful, perceptually uniform colourmaps from Crameri and CET (also incorporating code from William Lenthe). The screenshots come from the example programs colourmaps_crameri, hsvwheel, colourmaps_cet and colourmap_browser.
- The ability to read and visualize spherical HEALPix grids (images from healpixviewer)
- Some refactoring of core maths classes (including
Scale
->scale
;Quaternion
->quaternion
;TransformMatrix
->mat44
) - Improvements in OpenGL context handling along with the ability to coordinate access to the context via a mutex (thanks @connagh-opteran)
- It also introduces some changes and new features in
morph::Grid
andGridVisual
(thanks @blenk13 and @fabien-colonnier). The screenshot is from the example program grid_border.
- The option to use a signed index in
vvec
(wherev.at_signed(-1)
accesses the last element in thevvec
) - Graph axis labelling improvements (especially re-sizing the font for axis tick labels)
- Complex number handling in
morph::range
andmorph::scale
What's Changed
- Adds a Healpix VisualModel by @sebjameswml in #234
- add the auto_rescale_y on the GraphVisual model and make the depth of grid on GridVisual not relative to pixel width by @fabien-colonnier in #235
- Change name of Scale::compute_autoscale by @sebjameswml in #238
- Tweak behavour of monochrome/val maps by @sebjameswml in #241
- Stop branching code for ICC by @sebjameswml in #242
- Adds Matthew Petrov's Planck colour map by @sebjameswml in #245
- Merge pull request #245 from ABRG-Models/221-CMB_colourmap by @sebjameswml in #247
- 221 cmb colourmap by @sebjameswml in #249
- Minor improvements by @sebjameswml in #250
- Adds a function to look up an index from a passed-in coordinate. by @sebjameswml in #251
- 240 vvec of vecs in grid by @sebjameswml in #252
- Healpix astrometry more c++ by @sebjameswml in #253
- Adds a nice test of all the 1D colourmaps for perceptual uniformity by @sebjameswml in #254
- 257 visual destruction opengl error by @sebjameswml in #258
- Adds ushort support for read in a container of data by @sebjameswml in #260
- Correct rounding error in number of pixel computation and grid drawing by @fabien-colonnier in #259
- Adds colourmaps from CET, Fabio Crameri and William Lenthe by @sebjameswml in #262
- setContext() call is not correct in OWNED_MODE by @sebjameswml in #264
- Output a colour map string name which matches the C++ code name for ColourMapType by @sebjameswml in #266
- Adds signed indexing to vvec by @sebjameswml in #267
- A possible solution to keeping text labels all legible. by @sebjameswml in #256
- GraphVisual auto-rescaling review by @sebjameswml in #269
- Adds a Colourmap browser by @sebjameswml in #270
- Demonstrate that += and -= are ok in constexpr fn by @sebjameswml in #271
- Adds constexpr tests of the range class by @sebjameswml in #272
- Adds a 'suggest_dims' static method to the Grid class by @sebjameswml in #274
- find_nearest_neighbours() and indicies_in_radius() functions added to Grid by @blenk13 in #277
- shift_index functions added into Grid class by @blenk13 in #278
- Need to know what the HDF5_INCLUDE_DIR is by @sebjameswml in #281
- Adds axes indicator to healpixvis by @sebjameswml in #284
- Adds complex number handling to morph::range and morph::Scale by @sebjameswml in #273
- Dev/refactor matrix nn by @sebjameswml in #287
- Quaternion refactor by @sebjameswml in #288
- Refactor morph::Scale -> morph::scale by @sebjameswml in #289
- Updates scale docs following refactor by @sebjameswml in #290
- morph::Tools refactor by @sebjameswml in #291
- Slightly nicer string constants in morph::tools by @sebjameswml in #292
- Removes Grid::n attribute, replacing with Grid::n() and removing Grid… by @sebjameswml in #293
- Make it possible to releaseContext after morph::Visual construction by @sebjameswml in #294
- Adds a method to rotate the scene about an axis by @sebjameswml in #295
- Add a lockable context for improved memory safety. by @connagh-opteran in #296
New Contributors
- @connagh-opteran made their first contribution in #296
Full Changelog: v3.1.1...v3.2
The Correctly Rotated Release
This point release fixes some rotations that were coded wrong to compensate for the bugs in Quaternion
and TransformMatrix
. The most significant fix is to correctly rotate y axis labels in GraphVisual
.
What's Changed
- 232 some graph labels are rotated the wrong way by @sebjameswml in #233
Full Changelog: v3.1...v3.1.1
The Rotated Release
This point release fixes important bugs in rotation calculations in morph::Quaternion
and morph::TransformMatrix
and also adds the ability to set angle by axis/angle in the Quaternion
constructor and compute rotations by quaternion multiplication. For example:
morph::Quaternion<double> q (u_x, morph::mathconst<double>::pi);
morph::vec<double, 3> v_in = { 2, 6, 0 };
morph::vec<double, 3> v_out = q * v_in;
I changed the name of one internally used method: Quaternion::initFromAxisAngle(vec<float>, float)
is now called set_rotation
.
It also incorporates some improvements to GridVisual by @fabien-colonnier including the ability to place a border around selected pixels in the Grid. Thanks Fabien!
Other minor changes include github actions for Apple Mac computers and some tweaks to spherical coordinates relating to Geodesics (GeodesicVisual
).
What's Changed
- Adds a cartesian to spherical conversion by @sebjameswml in #220
- Adds a routine to compute the spherical coords of the Geodesic. by @sebjameswml in #222
- Adds an extents function to find the range of x, y and z positions of… by @sebjameswml in #223
- Changes 4 variables from float to bool, making sense. by @sebjameswml in #224
- Add feature in GridVisual to draw border around all pixels and selected pixels by @fabien-colonnier in #225
- Adds the ability to multiply Quaternion and vec (3 or 4D) by @sebjameswml in #226
- Feature/further quaternion tweaks by @sebjameswml in #228
- 229 transformmatrix opposite rotation by @sebjameswml in #231
Full Changelog: v3.0...v3.1