// Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // // $Id:$ // // Copyright (C) 1993-1996 by id Software, Inc. // // This source is available for distribution and/or modification // only under the terms of the DOOM Source Code License as // published by id Software. All rights reserved. // // The source is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License // for more details. // // DESCRIPTION: // Lookup tables. // Do not try to look them up :-). // In the order of appearance: // // int finetangent[4096] - Tangens LUT. // Should work with BAM fairly well (12 of 16bit, // effectively, by shifting). // // int finesine[10240] - Sine lookup. // Guess what, serves as cosine, too. // Remarkable thing is, how to use BAMs with this? // // int tantoangle[2049] - ArcTan LUT, // maps tan(angle) to angle fast. Gotta search. // //----------------------------------------------------------------------------- #ifndef __TABLES__ #define __TABLES__ #ifdef __linux__ #include #else #define PI 3.141592657 #endif #include "m_fixed.h" #define FINEANGLES 8192 #define FINEMASK (FINEANGLES-1) // 0x100000000 to 0x2000 #define ANGLETOFINESHIFT 19 // Effective size is 10240. extern fixed_t finesine[5*FINEANGLES/4]; // Re-use data, is just PI/2 pahse shift. extern fixed_t* finecosine; // Effective size is 4096. extern fixed_t finetangent[FINEANGLES/2]; typedef unsigned angle_t; // Binary Angle Measument, BAM. #define ANG45 ((angle_t)0x20000000) #define ANG90 ((angle_t)0x40000000) #define ANG180 ((angle_t)0x80000000) #define ANG270 ((angle_t)0xc0000000) #define SLOPERANGE 2048 #define SLOPEBITS 11 #define DBITS (FRACBITS-SLOPEBITS) // Effective size is 2049; // The +1 size is to handle the case when x==y // without additional checking. extern angle_t tantoangle[SLOPERANGE+1]; // Utility function, // called by R_PointToAngle. int SlopeDiv ( unsigned num, unsigned den); #endif //----------------------------------------------------------------------------- // // $Log:$ // //-----------------------------------------------------------------------------