Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
298 serge 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
#ifndef PI
42
#define PI				3.141592657
43
#endif
44
 
45
 
46
#include "m_fixed.h"
47
 
48
#define FINEANGLES		8192
49
#define FINEMASK		(FINEANGLES-1)
50
 
51
 
52
// 0x100000000 to 0x2000
53
#define ANGLETOFINESHIFT	19
54
 
55
// Effective size is 10240.
56
extern  fixed_t		finesine[5*FINEANGLES/4];
57
 
58
// Re-use data, is just PI/2 pahse shift.
59
extern  fixed_t*	finecosine;
60
 
61
 
62
// Effective size is 4096.
63
extern fixed_t		finetangent[FINEANGLES/2];
64
 
65
// Binary Angle Measument, BAM.
66
#define ANG45			0x20000000
67
#define ANG90			0x40000000
68
#define ANG180		0x80000000
69
#define ANG270		0xc0000000
70
 
71
 
72
#define SLOPERANGE		2048
73
#define SLOPEBITS		11
74
#define DBITS			(FRACBITS-SLOPEBITS)
75
 
76
typedef unsigned angle_t;
77
 
78
 
79
// Effective size is 2049;
80
// The +1 size is to handle the case when x==y
81
//  without additional checking.
82
extern angle_t		tantoangle[SLOPERANGE+1];
83
 
84
 
85
// Utility function,
86
//  called by R_PointToAngle.
87
int
88
SlopeDiv
89
( unsigned	num,
90
  unsigned	den);
91
 
92
 
93
#endif
94
//-----------------------------------------------------------------------------
95
//
96
// $Log:$
97
//
98
//-----------------------------------------------------------------------------