/* @(#)ag_gint.c 17.1.1.1 (ES0-DMD) 01/25/02 17:33:30 */ /*=========================================================================== Copyright (C) 1995 European Southern Observatory (ESO) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Massachusetss Ave, Cambridge, MA 02139, USA. Corresponding concerning ESO-MIDAS should be addressed as follows: Internet e-mail: midas@eso.org Postal address: European Southern Observatory Data Management Division Karl-Schwarzschild-Strasse 2 D 85748 Garching bei Muenchen GERMANY ===========================================================================*/ /* @(#)ag_gint.c 17.1.1.1 (OAA-ASTRONET) 01/25/02 17:33:30 */ /* * HEADER : ag_gint.c - Vers 3.6.000 - Oct 1991 - L. Fini, OAA * * * C INTERFACE MODULE */ #include #include static void AG_npoints(x0,x1,y0,y1,nsteps,xstep,ystep) /* this routine tries to guess the number of interpolation points needed to * Trace with suitable resolution a segment betveen two points. * Algorithm: * 1 - Find out an approximation of the length of the segment, summing * up ten pieces of it (suitable if non-linearity is not too savage) * 2 - Compute how many pixels will be traversed by each pieces both * for X and Y directions * 3 - take the sum of the two (X,Y) numbers as an extimate of the number * of steps. */ #define NPIECES 10 double x0,x1; /* X and X+1 values */ double y0,y1; /* Y and Y+1 values */ /* Output values: */ double *nsteps; /* Number of step to interpolate between (x0,y0) */ /* and (x1,y1) with suitable resolution */ double *xstep; /* X-axis interpolation step */ double *ystep; /* Y-axis interpolation step */ { double px[NPIECES+1],py[NPIECES+1]; double lx,ly; double xst,yst; double xd,yd; double steps; int k; px[0] = x0; px[NPIECES]= x1; py[0] = y0; py[NPIECES]= y1; xd=(px[NPIECES]-px[0]); yd=(py[NPIECES]-py[0]); xst=xd/NPIECES; yst=yd/NPIECES; for(k=1;k