Skip to content

Releases: aidannewsome/outie

0.1.6

Choose a tag to compare

@aidannewsome aidannewsome released this 25 Sep 18:41

Outie orients; it does not clean. The least-area triangulation of bent rings added in 0.1.5 is gone again: splitting faces that are not flat, like dropping collapsed or doubled faces, is the caller's job before calling. A self-touching ring is still mended before it is cut, since that is needed to cut it at all.

0.1.5

Choose a tag to compare

@aidannewsome aidannewsome released this 25 Sep 18:28

A ring whose corners lie in no plane, a curved roof panel drawn as one polygon, is triangulated as the surface of least total area through its corners (Barequet and Sharir 1995), so its triangles follow the curve instead of fanning across it. outie.bent and outie.least_area are public for callers that want to split such rings themselves.

0.1.4

Choose a tag to compare

@aidannewsome aidannewsome released this 25 Sep 17:52

A polygon is turned when the greater part of its area votes to turn, not when any one of its triangles does. A large roof cut into many triangles could have a sliver of itself stranded in a patch of its own, decided by chance, and that one sliver turned the whole roof.

0.1.3

Choose a tag to compare

@aidannewsome aidannewsome released this 25 Sep 17:29

A ring that touches or crosses itself, as a roof with a courtyard cut into it does, is mended before triangulation instead of fanned, so its triangles agree and the polygon is never turned by mistake. Quads split along the diagonal inside them. Polygons with no area give no triangles. Ray sampling and hit bookkeeping are vectorised: about a third faster on a city tile.

0.1.2

Choose a tag to compare

@aidannewsome aidannewsome released this 25 Sep 16:38

bfs_orient pairs faces across shared edges in one pass, forty times faster on big meshes.

0.1.1

Choose a tag to compare

@aidannewsome aidannewsome released this 25 Sep 16:38

Two options, both off unless asked for: closed_by_volume settles a closed patch by its signed volume; occluders are faces that block rays but are never turned, for the ground a model stands on.

0.1.0

Choose a tag to compare

@aidannewsome aidannewsome released this 25 Sep 16:38

A port of libigl's reorient_facets_raycast, done in three stages: transliterated line for line, made to run, then made Python.