-------------------------------------------
tickbox variable (left-click):
  $areaflag -- toggle shrink() vs. area_shrink()
-------------------------------------------
tickbox variable (middle-click):
  $bordneiflag -- toggle special treat bord vtx
-------------------------------------------


The "ar" tickbox (F3 panel, lower middle) has two
different functions that affect the operation of
SHRINK.

-------------------------------------------
Left-click (toggle $areaflag)
-------------------------------------------

When $areaflag is 1 (ticked, default is unticked)
SHRINK uses alternate C/tcl 'shrink' function,
area_shrink().

The area_shrink() function was originally
designed for deforming quadrangular surfaces,
which can preserve edge distances without
preserving face area (by distorting each face
into a narrow diamond).

With triangular surfaces, area is directly tied
to edge lengths.

Here is code for a proposed update vector for one
vertex, from area_shrink():

  dx = tx*wt + ax*wa + sx*ws + nx*nc*wn + nx*nforce*wc;
  dy = ty*wt + ay*wa + sy*ws + ny*nc*wn + ny*nforce*wc;
  dz = tz*wt + az*wa + sz*ws + nz*nc*wn + nz*nforce*wc;

The amplitude of final movement is clamped to 1.

-------------------------------------------
Middle-click (toggle $bordneiflag)
-------------------------------------------

When $bordneiflag is 1 (middle-click the tickbox,
default state is 0), border vertices are moved
according to the average movement of their
non-border neighbors.  N.B.: a middle-click tick
toggles $bordneiflag but does not change the "ar"
tickbox, which only indicates state of $areaflag.

This is designed for running area_shrink() on a
surface that has holes cut in it, which would
otherwise have a bias to move border vertices
away from a hole, in a direction perpendicular to
the edge of the hole (because of unbalanced
neighbors).

No affect if $areaflag not 1 ("ar" tick).
