coyote: CGNORMALIZE

Description
This is a utility routine to calculate the scaling vector required to position a 
graphics primitive of specified range at a specific position in an arbitray coordinate 
system. The scaling vector is given as a two-element array like this::
   scalingVector = [translationFactor, scalingFactor]
The scaling vector should be used with the [XYZ]COORD_CONV keywords of a graphics object 
or model. For example, if you wanted to scale an X axis into the coordinate range of 
-0.5 to 0.5, you might type something like this::
   xAxis->GetProperty, Range=xRange
   xScale = cgNormalize(xRange, Position=[-0.5, 0.5])
   xAxis, XCoord_Conv=xScale
Categories
Graphics Utility
Params
range: in, required
   A two-element vector specifying the data range.
Keywords
position: in, optional, type=float
   A two-element vector specifying the location in the coordinate system you 
   are scaling into. The vector [0.0,1.0] is used by default if Position is not 
   specified.
Examples
Here is how to use this program::
   xAxis->GetProperty, Range=xRange
   xScale = cgNormalize(xRange, Position=[-0.5, 0.5])
   xAxis, XCoord_Conv=xScale
Author
FANNING SOFTWARE CONSULTING::
   David W. Fanning
   1645 Sheely Drive
   Fort Collins, CO 80526 USA
   Phone: 970-221-0438
   E-mail: david@idlcoyote.com
   Coyote's Guide to IDL Programming: http://www.idlcoyote.com
History
Change History::
  Written by:  David W. Fanning, OCT 1997.
  Fixed a problem with illegal divide by zero. 21 April 2005. DWF.
  Fixed a problem when range[0] is greater than range[1]. 11 July 2006. DWF.
  Renamed to FSC_Normalize to avoid conflicts with 10,000 other programs named NORMALIZE. 17 October 2008. DWF.
  Renamed to cgNormalize 6 February 2013. DWF.
  The number I chose (1e-12) to fix the illegal divide by zero problem was too large. I'm now using 
      1d-25 instead. 9 September 2013. DWF.
Copyright
Copyright (c)1997-2013, Fanning Software Consulting, Inc.