123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // 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 <math.h>
- #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];
- // Binary Angle Measument, BAM.
- #define ANG45 0x20000000
- #define ANG90 0x40000000
- #define ANG180 0x80000000
- #define ANG270 0xc0000000
- #define SLOPERANGE 2048
- #define SLOPEBITS 11
- #define DBITS (FRACBITS-SLOPEBITS)
- typedef unsigned angle_t;
- // 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:$
- //
- //-----------------------------------------------------------------------------
|