home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d170 / surf.lha / Surf / src / fasttrig.c < prev    next >
C/C++ Source or Header  |  1988-11-22  |  1KB  |  56 lines

  1. #include <math.h>
  2. #include "fasttrig.h"
  3.  
  4. extern char *malloc();
  5.  
  6. float *sintab;
  7. float *costab;
  8.  
  9. static int oldn = -1,
  10.        oldrange = -1,
  11.        oldstart = -1;
  12.  
  13.  
  14. /*
  15.  * return true if could not get memory for trig lookup tables
  16.  */
  17. bool InitFastTrig(angstart, angrange, n)
  18.     int angstart;
  19.     int angrange;
  20.     int n;
  21. {
  22.  
  23.  
  24.     int i;
  25.     float value;
  26.     float AngleInc;
  27.     float curangle;
  28.  
  29.     if( n == oldn && oldrange == angrange && oldstart == angstart ) {
  30.         return(false);
  31.     }
  32.  
  33.     if( n != oldn ) {
  34.         if( sintab ) free(sintab);
  35.         if( costab ) free(costab);
  36.         sintab = (float *)malloc( n * sizeof( float ));
  37.         costab = (float *)malloc( n * sizeof( float ));
  38.         if( !sintab || !costab ) {
  39.            return(true);
  40.         }
  41.     }
  42.  
  43.     oldn = n;
  44.     oldrange = angrange;
  45.     oldstart = angstart;
  46.  
  47.     AngleInc = (PI*angrange)/(180 *(n-1));
  48.     for( curangle = angstart*PI/180.0, i = 0;
  49.          i< n; i++, curangle += AngleInc ) {
  50.  
  51.         sintab[i] = sin( curangle );
  52.         costab[i] = cos( curangle );
  53.     }
  54.     return(false);
  55. }
  56.