TYPE: SOP State
TITLE: PolySplit Operation

The PolySplit operation is provided as an interactive instrument for cutting
polygons.

Cuts are made by specifying locations on polygons.  Locations can be edges or
vertices and do not necessarily have to be within the same polygon, nor do they
have to be between two adjacent polygons.  If a cut is made from one polygon to
another non-adjacent polygon, the operation will try to cut across all the
polygons in between.  If no connected path exists along the cut, the operation
will cut as far as it can from either end.

Once you have specified the path, right-click to complete the operation.  To
modify the path after it has been completed, shift-left-click anywhere to
continue building the path.  Shift-left-click close to an end-point along the
path to continue building from that end-point.

The new polygons that are created preserve vertex and primitive attributes of
the polygon from which they were cut.  Group memberships are also preserved.

A cut made from one end vertex to another end vertex of an open polygon will
close the polygon.

There are two algorithms that PolySplit can use to find the path from the
source to the destination.  The 'Shortest Distance' algorithm tries to find the
shortest path through connecting polygons.  The 'Quad Strips' algorithm finds a
path through quads, and moves from one quad to the next by crossing opposite
edges.  The latter algorithm cannot be used to cut through vertices, and
self-intersecting cuts may give undesired results.  Unlike 'Shortest Distance',
'Quad Strips' will not attempt a cut unless a complete path can be found.

If only one split location is specified and both 'Quad Strips' and 'Close Path'
are used, PolySplit will try to find a closed loop around the quad strip.

Locations can be specified interactively or as parameters in the following form:

~c(
     avb           - cut at vertex b of primitive a where a and b are
                     integers.  (e.g. 0v3)
     aeb           - cut at the midpoint of edge b of primitive a where
                     a and b are integers. (e.g. 0e3)
     aeb:t         - cut at t percent along the edge b of primitive a
                     where a and b are integers and t is a real number 
                     between 0.0 and 1.0.  (e.g. 0e3:0.7 will cut at 70%
                     along the edge 3 of primitive 0)
     pa-b          - cut at the midpoint of the edge between points a
                     and b, where a and b are integers. (e.g. p1-3)
     pa-b:t        - cut at t percent along the edge between points a and
                     b, where a and b are integers. (e.g. p1-3:0.7)
~c)

The Ctrl-right-mouse menu provides additional options, such as closing the
path, snapping to edge locations and deleting the last point during path
construction.  For example, toggling on "Use constant bias" will show two snap
locations that are consistent with the previous edge's location.  Toggling on
"Snap to perpendicular" will snap to a location on an edge that will produce a
cut that is at a right-angle to that edge.

See also: PolyKnit, Subdivide
