\documentclass{article} \usepackage{open-axiom} \begin{document} \title{\$SPAD/src/algebra plottool.spad} \author{The Axiom Team} \maketitle \begin{abstract} \end{abstract} \eject \tableofcontents \eject \section{package PLOTTOOL PlotTools} <>= )abbrev package PLOTTOOL PlotTools ++ Author: ++ Date Created: ++ Date Last Updated: ++ Keywords: ++ Examples: ++ References: ++ Description: ++ This package exports plotting tools PlotTools(): Exports == Implementation where L ==> List -- Pt ==> TwoDimensionalPoint SEG ==> Segment SF ==> DoubleFloat Pt ==> Point(SF) PLOT ==> Plot DROP ==> DrawOption S ==> String VIEW2D ==> TwoDimensionalViewport Exports ==> with calcRanges: L L Pt -> L SEG SF ++ calcRanges(l) \undocumented Implementation ==> add import GraphicsDefaults import PLOT import TwoDimensionalPlotClipping import DrawOptionFunctions0 import ViewportPackage import POINT import PointPackage(SF) --%Local functions xRange0: L Pt -> SEG SF xRange: L L Pt -> SEG SF yRange0: L Pt -> SEG SF yRange: L L Pt -> SEG SF drawToScaleRanges: (SEG SF,SEG SF) -> L SEG SF drawToScaleRanges(xVals,yVals) == xDiff := (xHi := hi xVals) - (xLo := lo xVals) yDiff := (yHi := hi yVals) - (yLo := lo yVals) pad := abs(yDiff - xDiff)/2 yDiff > xDiff => [segment(xLo - pad,xHi + pad),yVals] [xVals,segment(yLo - pad,yHi + pad)] select : (L Pt,Pt -> SF,(SF,SF) -> SF) -> SF select(l,f,g) == m := f first l for p in rest l repeat m := g(m,f p) m xRange0(list:L Pt) == select(list,xCoord,min) .. select(list,xCoord,max) yRange0(list:L Pt) == select(list,yCoord,min) .. select(list,yCoord,max) select2: (L L Pt,L Pt -> SF,(SF,SF) -> SF) -> SF select2(l,f,g) == m := f first l for p in rest l repeat m := g(m,f p) m xRange(list:L L Pt) == select2(list,lo(xRange0(#1)),min) .. select2(list,hi(xRange0(#1)),max) yRange(list:L L Pt) == select2(list,lo(yRange0(#1)),min) .. select2(list,hi(yRange0(#1)),max) --%Exported Functions calcRanges(llp) == drawToScale() => drawToScaleRanges(xRange llp, yRange llp) [xRange llp, yRange llp] @ \section{License} <>= --Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --All rights reserved. -- --Redistribution and use in source and binary forms, with or without --modification, are permitted provided that the following conditions are --met: -- -- - Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- -- - Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in -- the documentation and/or other materials provided with the -- distribution. -- -- - Neither the name of The Numerical ALgorithms Group Ltd. nor the -- names of its contributors may be used to endorse or promote products -- derived from this software without specific prior written permission. -- --THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @ <<*>>= <> <> @ \eject \begin{thebibliography}{99} \bibitem{1} nothing \end{thebibliography} \end{document}