Added RoseUnit definitions and conversions for mass units, mg, gram,
kg, tonne (metric ton), oz, pound, ton, and long ton.
Added kilonewton to RoseUnit force definitions.
Added single core unit and RoseMeasureType definitions for all
remaining SI quantities: ampere/current, becquerel/radioactivity,
candela/luminous intensity, coulomb/charge farad/capacitance
gray/absorbed dose, henry/inductance, joule/energy, lumen/luminous
flux, lux/illuminance, mole/amount of substance, ohm/resistance,
siemens/conductance, sievert/equivalent dose, tesla/magnetic flux
density, volt/voltage, weber/magnetic flux,
Changes in release 20.1 (2023-08-10)
Internal mesh improvements for handling large numbers of faces.
Changes in release 20.0 (2023-03-10)
Version 20 release.
Add get/setOrigin() to mesh with values for body and computed,
extend the find functions to look for an origin or an effective mesh
which prioritizes computed, body, then other.
Add hooks and logic to start precursor jobs and meshes when a given
mesh job is started.
Added rose_color functions for converting between RGB and HSV
Copy origin in rose_xform_normalize() when not normalizing in place.
Additional input checks on xform and vec functions.
No more public members on RoseDisplayList.
Changes in release 19.2 (2022-02-23)
Fixed crash when unable to compute normal on a very small face.
Added checks in faceting code to fix crash on repeated points
(this occurrs in IFC poly loop instance.)
Changes in release 19.1 (2022-02-01)
Version 19 Service Pack One release.
RoseDisplayList changes to support exploded view.
Moved XML support functions to another library (rosexml/p28lib)
Added slicing APIs: rose_slice_place, rose_slice_plane_2d,
rose_slice_get_loops_isects, rose_slice_fill_loops. These functions
are used to slice a mesh, and get and fill the intersection loops.
Fixed bug in faceting code where a surface is bounded by a complex
trimmed spline curve. This occasionally occurrs in STEP data, and
was resulting in some quasi-periodic surfaces (screws) not faceting
Fixed bug in NURBS curve solving code where the solution was not a
global minimum, but rather a local minimum.
Fixed bug in facet code where the additional facetsd outside the
bounding curve were being generated, due to surface patch corner
appearing very close to the bounding curve.
Fixed bug in boolean that detected a false positive for an
impossible case, thus causing the operation to fail.
Added overload copyFlags() method to RoseDisplayList and
RoseGraphicStyles, which takes a value flag. This allows those
methods to invert the value of a flag while copying it.
Fixed bug in boolean code where edges were incorrectly getting merged.
Changes in release 19.0 (2021-07-19)
Version 19 release.
Renamed rose_xform_scale() to rose_xform_compose_scale(), because it
is actually building a scale matrix and composing it to apply the
scaling to both direction and origin.. Kept a temporary #define for
the old name. Added rose_xform_scale_dirs() which applies a scaling
factor to the direction portion of the matrix, which is how scaling
normally works in GL et al.
Renamed unit functions using the same grouping pattern that we are
now using for the STEP and IFC extensions. Defines are in place for
the old names, disable by defining ROSEMATH_NO_DEPRECATED_NAMES
Renamed RoseMeshFacetSet to RoseMesh and added many definitions from
the STEP and IFC meshers to share algorithms across the packages.
This includes the RoseSurface and RoseSurfaceSolver classes, and the
Added general get object functions to RoseMesh and RoseMeshBuilder
for tracking a mesh back to its source data. These return a general
RoseObject pointer. Subtypes may provide functions that return more
getFaceObject (unsigned idx)
getEdgeObject (unsigned idx)
Changes in release 18.1 (2019-10-28)
Version 18 Service Pack One release.
Added AMF and 3MF export functions for meshes.
Changes in release 18.0 (2018-10-01)
Version 18 release.
Check if the given axis and reference direction vectors are
co-aligned in a call to rose_xform_put_dirs() and if they are,
generate a reference dir as if it were omitted.
Pass through original value on unit conversion if either the
starting or ending unit is declared as roseunit_as_is. Previously,
we only checked ending unit.
Added functions to project a point to a plane.
Added functions for use with Euler angles and rotations.
Disable XML entity expansion when reading XML mesh data to avoid
billion laughs attack.
Changes in release 17.1 (2017-12-29)
Added RoseDelaunay2D::getPointCount() method.
Updated RoseMeshFacetSet::getTriangleNormal to return a zero vector on
degenerate triangles and tweaked tolerance for degenerate values.
Speed improvement to vector normalize.
Changes in release 17.0 (2017-04-07)
Update for major revision.
Updated RoseMeshTopology to allow partial shells to be processed.
(Useful for finding the boundaries of a set of facets.)
Added RoseMeshXMLOpts to the XML writer API.
Added bulletproofing against NULL values to topology handling code.