|
|
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: //-----------------------------------------------------------------------------
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.