star-enclosures-2d

Extract enclosures from 2D geometry
git clone git://git.meso-star.fr/star-enclosures-2d.git
Log | Files | Refs | README | LICENSE

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.