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
Polymerge eliminates redundancies from
polyhedral objects in OOGL's OFF format, and writes another OFF
object to its standard output. (Optionally it can produce instead
an input file for Brakke's Evolver.) Specifically, it combines
nearly-coincident vertices, nearly-collinear edges, and
nearly-coplanar faces. Vertices which aren't used on any face are
deleted, as are faces with less than three vertices. Thresholds for
approximate equality are adjustable from the command line. Options
are:
- -v vertex_thresh
- Merge vertices when they're closer than vertex_thresh
apart; the default is .00001.
- -V
- Don't attempt to merge vertices.
- -e edge_thresh
- Merge edges where |sin(vertex_angle)| < edge_thresh;
the default is When edges are merged, the corresponding vertex is
removed.
- -E
- Don't attempt to merge edges. (4OFF edges are never merged.)
- -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.
- -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. 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
SEE ALSO
anytooff(1),
offconsol(1)
BUGS
Coplanar faces are merged even if they were assigned
different colors. Should be able to handle binary OFF objects, but
this hasn't been tested.