CGNORMALIZE
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.