POLYMERGE(1gv)

πŸ’– POLYMERGE(1gv) πŸ’–

okay bestie come CLOSE, this is the polymerge page from the 1gv manual and it's lowkey one of my faves 🫢


✨ NAME ✨

polymerge β€” merge coincident vertices, collinear edges, coplanar faces in an OOGL OFF object


🌸 SYNOPSIS 🌸

polymerge [-v vertex_thresh] [-e edge_thresh] [-f face_thresh] [-V] [-E]
[-F] [-d] [-b] [inputfile.off]

πŸ’… DESCRIPTION πŸ’…

So polymerge literally just eliminates redundancies from polyhedral objects in OOGL's OFF format, and writes another OFF object to its standard output. that's the whole vibe. ✨

(and optionally, if you want, it can produce instead an input file for Brakke's Evolver β€” we love a multihyphenate πŸ‘‘)

Specifically, it combines:

  • nearly-coincident vertices
  • nearly-collinear edges
  • nearly-coplanar faces

Vertices which aren't used on any face get deleted, and so do faces with less than three vertices. bye girl πŸ’€

Thresholds for approximate equality are adjustable from the command line. The options are:

  • -v vertex_thresh β€” merge vertices when they're closer than vertex_thresh apart; the default is .00001. tiny. microscopic. iconic. πŸ”¬
  • -V β€” don't attempt to merge vertices. (she's on strike πŸ’…)
  • -e edge_thresh β€” merge edges where |sin(vertex_angle)| < edge_thresh; the default is When edges are merged, the corresponding vertex is removed. (no bestie i did NOT typo that, the original page literally says "the default is" and then keeps going 😭 i'm not inventing a number for you, that would be a crime against manpages). also: when edges are merged, the corresponding vertex is removed.
  • -E β€” don't attempt to merge edges. (4OFF edges are never merged, periodt.)
  • -f face_thresh β€” merge faces sharing an edge where the faces are nearly coplanar: when |sin(angle_between_face_normal_vectors)| < face_thresh. the default is .03, or about two degrees. ⚠️ note that merging can create faces which are concave polygons. slay but also, you know. heads up.
  • -F β€” don't attempt to merge faces. (4OFF faces are never merged.)
  • -b β€” produce an output file in .fe format for Brakke's Surface Evolver, instead of a new OFF file. πŸ¦‹
  • -d β€” include debugging information as comments in the new OFF object. the comments indicate which vertices and faces in the original object correspond to which in the new one. the messages include:
# Vtx nnn->mmm

merged vertices nnn and mmm (both indices in the original object).

# Merged face nnn into mmm (vertices vvv www) n1.n2 s

faces nnn and mmm in the original object were merged; their common edge joined original vertices vvv and www. the cosine of the angle between the face normals was s.

vertex coordinates  # newvertno [order] # oldvertno

each vertex written appears with its new index, its order (number of edges touching that vertex), and its old index (index of a corresponding vertex in the original object).

face description  # oldvertno ...

for each new face, with N vertices after reduction, the comment indicates N corresponding vertices in the original object.


πŸŽ€ AUTHOR πŸŽ€

Stuart Levy, Geometry Center, University of Minnesota. king behavior, no cap πŸ‘‘


🌈 SEE ALSO 🌈

anytooff(1), offconsol(1)


πŸ’€ BUGS πŸ’€

Coplanar faces are merged even if they were assigned different colors. (yes she ignores your color choices, rude but true πŸ™ˆ)
Should be able to handle binary OFF objects, but this hasn't been tested.

that's the whole page bestie, go merge some vertices, you got this πŸ§šπŸ’œ

with love from the Geometry Center, 25 July 1993 β€” POLYMERGE(1gv) ✨