home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser-CD 2000 January / LCD_01_2000.iso / games / doom / pmdoom / include / tables.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-12-17  |  2.5 KB  |  101 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. #define PI                3.141592657
  45. #endif
  46.  
  47.  
  48. #include "m_fixed.h"
  49.     
  50. #define FINEANGLES        8192
  51. #define FINEMASK        (FINEANGLES-1)
  52.  
  53.  
  54. /*  0x100000000 to 0x2000 */
  55. #define ANGLETOFINESHIFT    19        
  56.  
  57. /*  Effective size is 10240. */
  58. extern  fixed_t        finesine[5*FINEANGLES/4];
  59.  
  60. /*  Re-use data, is just PI/2 pahse shift. */
  61. extern  fixed_t*    finecosine;
  62.  
  63.  
  64. /*  Effective size is 4096. */
  65. extern fixed_t        finetangent[FINEANGLES/2];
  66.  
  67. /*  Binary Angle Measument, BAM. */
  68. #define ANG45            0x20000000
  69. #define ANG90            0x40000000
  70. #define ANG180        0x80000000
  71. #define ANG270        0xc0000000
  72.  
  73.  
  74. #define SLOPERANGE        2048
  75. #define SLOPEBITS        11
  76. #define DBITS            (FRACBITS-SLOPEBITS)
  77.  
  78. typedef unsigned angle_t;
  79.  
  80.  
  81. /*  Effective size is 2049; */
  82. /*  The +1 size is to handle the case when x==y */
  83. /*   without additional checking. */
  84. extern angle_t        tantoangle[SLOPERANGE+1];
  85.  
  86.  
  87. /*  Utility function, */
  88. /*   called by R_PointToAngle. */
  89. int
  90. SlopeDiv
  91. ( unsigned    num,
  92.   unsigned    den);
  93.  
  94.  
  95. #endif
  96. /* ----------------------------------------------------------------------------- */
  97. /*  */
  98. /*  $Log:$ */
  99. /*  */
  100. /* ----------------------------------------------------------------------------- */
  101.