Changes in release 19.3 (in progress)
- Added rose_color functions for converting between RGB and HSV
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 property.
- 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
- rose_get_measure_as_unit rose_unit_convert
- rose_get_measure_type rose_unit_get_measure_type
- rose_get_measure_type_name rose_unit_get_measure_name
- rose_get_rational_unit rose_unit_find_rational
- rose_get_unit rose_unit_find
- rose_get_unit_conversion_factor rose_unit_get_conversion
- rose_get_unit_denominator rose_unit_get_denominator
- rose_get_unit_fullname rose_unit_get_fullname
- rose_get_unit_name rose_unit_get_name
- rose_get_unit_numerator rose_unit_get_numerator
- rose_get_unit_related_by_factor rose_unit_find_related_by_factor
- Added functions useful for graphics transforms.
- rose_xform_put_frustrum()
- rose_xform_put_ortho()
- rose_xform_translate()
- rose_xform_transpose()
- rose_xform2d_translate()
- rose_xform2d_transpose()
- 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 rose_mesh_worker functions.
- 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
specific subclasses.
- getObject()
- getRepObject()
- 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.
- rose_mesh_amf_save()
- rose_mesh_3mf_save()
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.
- rose_pt_nearest_on_plane()
- rose_pt_nearest_on_plane_uv()
- Added functions for use with Euler angles and rotations.
- rose_xform_compose_rotation()
- rose_xform_get_euler_angles()
- rose_xform_put_euler_angles()
- 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.
Changes in release 16.11 (2016-11-02)
- Updated topology validation to fail fast.
- Added getPoint method to RoseDelaunay code.
Changes in release 16.10 (2016-07-25)
- Release for NCPack 16.21
Changes in release 16.9 (2016-06-30)
- Added RoseMeshFacetSet::appendNullFacet, clearFacetsOnly.
- Added rose_mesh_set_color (for a mesh face).
Changes in release 16.8 (2016-06-01)
- Released as ST-Developer v16 SP4
- Updated mesh topology validation code to check for anti-parallel facets that share a single vertex
- Added overloads with RoseDirection and RosePoint to the put_x/y/zdir functions and rose_xform_put_origin.
- Added some constant arrays for ordinal directions to accompany the
existing rose_vec_zero const array.
- rose_vec_100
- rose_vec_010
- rose_vec_001
Changes in release 16.7 (2015-12-31)
- Added function to write mesh data in JSON format.
Changes in release 16.6 (2015-11-21)
- Version bump for ncpack 16.16
Changes in release 16.5 (2015-09-21)
- Updated RoseMeshTopologyVertexCursor to insure that the edges and vertices returned by getNext are return in counter-clockwise order.
- Added void MeshMeshTopologyVertexCursor::facetEdgeVertex.
- Update for ST-Developer v16 SP3
Changes in release 16.4 (2015-08-25)
Changes in release 16.3 (2015-08-19)
- Version bump for latest ncpack.
Changes in release 16.2 (2015-08-18)
- Updated delaunay functionality to specify two types of edges: border and internal. This is needed when refaceting triangles.
- Updated delaunay code to be more more robust numerically when computing the intersection of two small line segments by scaling the direction vector rather than using the existing values
- Update RoseMeshFacet::getFacetNormal to not crash when the facet index is ROSE_MESH_NULL_IDX
- Fixed bugs in rose_mesh_topology: grow vertex list when calling setFirstVertexFacet. Update growFacetList to take a size parameter, rather than the max facet to take (== sz+1).
- Updated RoseDelaunay2D::insertPoint to return ROSE_NOTFOUND when any of the points in the list could not be inserted.
Changes in release 16.1 (2015-07-24)
- Added topology query methods to RoseDelaunay2D: getEdgeCount(), getEdgeVertex(), getEdgeTriangle(), getTriangleEdge(), getTriangleVertex()
- Facet, Face, Face properties and FacetSet basics.
- Added RoseReal2DArray and RoseReal3DArray to handle lists of points and directions.
- Added cartesian transformation operator initialization logic and non-uniform scaling operations.
- Bounding box classes for 3D and 2D regions. Added bounds computation for lists of points, facets and entire meshes.
- Added rose_pt_midpoint(), centerpt() for the bounding boxes, and meshing XML output.
- Added 2D Delaunay triangularization helper class.
Changes in release 16.0 (2015-06-02)
- Matrix math, cross/dot products, etc for points, directions, and coordinate system transforms.
- Unit enums and value conversion.
- Initial version, collecting math code scattered across stix, stixmesh, stixsim, and ifc libraries. Bringing everything into one place, documenting, and making sure everything is properly tested.