README.md (4551B)
1 # Star-enclosures-2d 2 3 The purpose of Star-enclosures-2d is to extract enclosures from raw 4 geometry. An enclosure is a set of segments enclosing a given area. The 5 enclosure notion extends to open enclosures for which there is no inside 6 or outside. For every detected enclosure, the library provides the set 7 of involved segment sides as well as the set of involved media and a few 8 metrics (number of segments, volume, area, ...). 9 10 From release 0.5, the geometry has to be provided at once, with no 11 duplicates nor zero-length segments. To help ensuring this constraints, 12 one can rely on the star-geometry-2d library. 13 14 Also the convention regarding FRONT/BACK sides for input segments as 15 well as the convention regarding normals' orientation for output 16 segments can be set. 17 18 ## Requirements 19 20 - C compiler 21 - POSIX make 22 - pkg-config 23 - [RSys](https://gitlab.com/vaplv/rsys) 24 - [Star 2D](https://gitlab.com/meso-star/star-3d) 25 - [Star SamPling](https://gitlab.com/meso-star/star-sp) 26 (optinal for tests) 27 28 ## Installation 29 30 Edit config.mk as needed, then run: 31 32 make clean install 33 34 ## Known Bugs 35 36 In some rare circumstances, raytracing accuracy problems can lead to 37 incorrect connex components pairing. This bug has already been fixed 38 in star-enclosures-3d but is still present in star-enclosures-2d. 39 40 ## Release notes 41 42 ### Version 0.6 43 44 - Replace CMake by Makefile as build system. 45 - Update compiler and linker flags to increase the security and 46 robustness of generated binaries. 47 - Provide a pkg-config file to link the library as an external 48 dependency. 49 50 ### Version 0.5.5 51 52 Fixes the (rare) situation where temporary local variables could be used 53 in a unitialized way in the `senc2d_scene_create` function. 54 55 ### Version 0.5.4 56 57 Sets the required version of Star-SampPling to 0.12. This version fixes 58 compilation errors with gcc 11 but introduces API breaks. 59 60 ### Version 0.5.3 61 62 Fix API break on filter function introduced by Star-2D 0.5. 63 64 ### Version 0.5.2 65 66 BugFix: enclosures including multiple media could end with invalid 67 primitive count. 68 69 ### Version 0.5.1 70 71 Fix a warning 72 73 ### Version 0.5 74 75 This release breaks the API as geometry cannot be provided through calls 76 to an add-like call anymore. Instead the whole geometry must be provided 77 at once, with no duplicates (either vertices or segments) nor zero-area 78 segments. 79 80 - Compute volume (in m^2) and surface (in m) of enclosures. 81 - Report overlapping segments. Only segments with a common vertex are 82 currently detected. Do not extract enclosures when overlapping 83 segments are detected. 84 - Make enclosure IDs consistent across runs. 85 - Fix enclosure extraction when all segments Ny component is zero. 86 - More robust on invalid scenes. 87 88 ### Version 0.4.2 89 90 - Fix global id of segments; releases 0.4.0 and 0.4.1 are broken 91 - Reintroduce an API call to get the global id in user space of a global 92 unique segment after deduplication 93 94 ### Version 0.4.1 95 96 - Fix an infinite loop related to a rare numerical accuracy problem. 97 98 ### Version 0.4 99 100 - Change signature of the `senc2d_scene_add_geometry` API. Thus this 101 release is **not compatible** with previous ones. The `global_id` 102 callback that was ill-defined is removed and 2 callbacks are added to 103 manage client-app data when deduplicating geometry. These 2 callback 104 allow a proper client-app management of global ids. 105 - Remove execution time for analysis steps from the log. 106 107 ### Version 0.3.1 108 109 - Performance Fix: when a connex component was canceled by a thread the 110 complexity was O(n^2). New algorithm is O(n). 111 - Output execution time for analysis steps in the log. 112 113 ### Version 0.3 114 115 - Add API calls to access to geometry frontiers. 116 - Improve documentation in the header file. 117 - BugFix: wrong data cleaning on computation canceling. 118 119 ### Version 0.2.2 120 121 - BugFix when grouping components into enclosures. 122 - Add a warning message in log when edges that could surround a hole are 123 found (edges with at least one unshared vertex and different media on 124 its sides). 125 126 ### Version 0.2.1 127 128 BugFix: needed data cleaning on computation canceling. 129 130 ### Version 0.2 131 132 - Add the support of enclosures with multiple media. 133 - Allow to set the FRONT/BACK convention for input segments. 134 - Allow to set the normal convention for output segments. 135 136 ## License 137 138 Copyright © 2018-2021, 2023, 2024 139 [|Méso|Star>](https://www.meso-star.com) (<contact@meso-star.com>). 140 141 Star-enclosures-2d is free software released under the GPLv3+ license: 142 GNU GPL version 3 or later. You are welcome to redistribute it under 143 certain conditions; refer to the COPYING file for details.