home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 25 / amigaformatcd25.iso / websites / amidoom / adoom_src-0.7.lha / ADoom_src / tables.h < prev    next >
C/C++ Source or Header  |  1997-12-26  |  2KB  |  103 lines

  1. // Emacs style mode select   -*- C++ -*- 
  2. //-----------------------------------------------------------------------------
  3. //
  4. // $Id:$
  5. //
  6. // Copyright (C) 1993-1996 by id Software, Inc.
  7. //
  8. // This source is available for distribution and/or modification
  9. // only under the terms of the DOOM Source Code License as
  10. // published by id Software. All rights reserved.
  11. //
  12. // The source is distributed in the hope that it will be useful,
  13. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
  15. // for more details.
  16. //
  17. // DESCRIPTION:
  18. //    Lookup tables.
  19. //    Do not try to look them up :-).
  20. //    In the order of appearance: 
  21. //
  22. //    int finetangent[4096]    - Tangens LUT.
  23. //     Should work with BAM fairly well (12 of 16bit,
  24. //      effectively, by shifting).
  25. //
  26. //    int finesine[10240]        - Sine lookup.
  27. //     Guess what, serves as cosine, too.
  28. //     Remarkable thing is, how to use BAMs with this? 
  29. //
  30. //    int tantoangle[2049]    - ArcTan LUT,
  31. //      maps tan(angle) to angle fast. Gotta search.    
  32. //    
  33. //-----------------------------------------------------------------------------
  34.  
  35.  
  36. #ifndef __TABLES__
  37. #define __TABLES__
  38.  
  39.  
  40.  
  41. #ifdef LINUX
  42. #include <math.h>
  43. #else
  44. #ifndef __SASC
  45. #define PI                3.141592657
  46. #endif
  47. #endif
  48.  
  49.  
  50. #include "m_fixed.h"
  51.     
  52. #define FINEANGLES        8192
  53. #define FINEMASK        (FINEANGLES-1)
  54.  
  55.  
  56. // 0x100000000 to 0x2000
  57. #define ANGLETOFINESHIFT    19        
  58.  
  59. // Effective size is 10240.
  60. extern  fixed_t        finesine[5*FINEANGLES/4];
  61.  
  62. // Re-use data, is just PI/2 pahse shift.
  63. extern  fixed_t*    finecosine;
  64.  
  65.  
  66. // Effective size is 4096.
  67. extern fixed_t        finetangent[FINEANGLES/2];
  68.  
  69. // Binary Angle Measument, BAM.
  70. #define ANG45            0x20000000
  71. #define ANG90            0x40000000
  72. #define ANG180        0x80000000
  73. #define ANG270        0xc0000000
  74.  
  75.  
  76. #define SLOPERANGE        2048
  77. #define SLOPEBITS        11
  78. #define DBITS            (FRACBITS-SLOPEBITS)
  79.  
  80. typedef unsigned angle_t;
  81.  
  82.  
  83. // Effective size is 2049;
  84. // The +1 size is to handle the case when x==y
  85. //  without additional checking.
  86. extern angle_t        tantoangle[SLOPERANGE+1];
  87.  
  88.  
  89. // Utility function,
  90. //  called by R_PointToAngle.
  91. int
  92. SlopeDiv
  93. ( unsigned    num,
  94.   unsigned    den);
  95.  
  96.  
  97. #endif
  98. //-----------------------------------------------------------------------------
  99. //
  100. // $Log:$
  101. //
  102. //-----------------------------------------------------------------------------
  103.