text: // 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:$
  //
  //-----------------------------------------------------------------------------
  