1 // Emacs style mode select -*- C++ -*-
2 //-----------------------------------------------------------------------------
6 // Copyright (C) 1993-1996 by id Software, Inc.
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.
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
19 // Do not try to look them up :-).
20 // In the order of appearance:
22 // int finetangent[4096] - Tangens LUT.
23 // Should work with BAM fairly well (12 of 16bit,
24 // effectively, by shifting).
26 // int finesine[10240] - Sine lookup.
27 // Guess what, serves as cosine, too.
28 // Remarkable thing is, how to use BAMs with this?
30 // int tantoangle[2049] - ArcTan LUT,
31 // maps tan(angle) to angle fast. Gotta search.
33 //-----------------------------------------------------------------------------
42 #define FINEANGLES 8192
43 #define FINEMASK (FINEANGLES-1)
46 // 0x100000000 to 0x2000
47 #define ANGLETOFINESHIFT 19
49 // Effective size is 10240.
50 extern fixed_t finesine[5*FINEANGLES/4];
52 // Re-use data, is just PI/2 pahse shift.
53 extern fixed_t* finecosine;
56 // Effective size is 4096.
57 extern fixed_t finetangent[FINEANGLES/2];
59 // Binary Angle Measument, BAM.
60 #define ANG45 0x20000000
61 #define ANG90 0x40000000
62 #define ANG180 0x80000000
63 #define ANG270 0xc0000000
66 #define SLOPERANGE 2048
68 #define DBITS (FRACBITS-SLOPEBITS)
70 typedef unsigned angle_t;
73 // Effective size is 2049;
74 // The +1 size is to handle the case when x==y
75 // without additional checking.
76 extern angle_t tantoangle[SLOPERANGE+1];
80 // called by R_PointToAngle.
88 //-----------------------------------------------------------------------------
92 //-----------------------------------------------------------------------------