Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

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