Annotation of doom/tables.h, revision 1.1.1.3

1.1       root        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
1.1.1.3 ! root       44: #define PI                             3.141592657
1.1       root       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: //-----------------------------------------------------------------------------

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.