diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-12-05 08:44:55 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-12-05 08:44:55 -0600 |
commit | d2b407f9f9272b8f7dbc97c494d11f2468157363 (patch) | |
tree | ba1c4b3164a826bb440266d48b82031b9c0f4d5c /apps/graphics/traveler/include/trv_trigtbl.h | |
parent | 86e5c3a5b0792e9234f98e4aeb1c0721b56352b2 (diff) | |
download | nuttx-d2b407f9f9272b8f7dbc97c494d11f2468157363.tar.gz nuttx-d2b407f9f9272b8f7dbc97c494d11f2468157363.tar.bz2 nuttx-d2b407f9f9272b8f7dbc97c494d11f2468157363.zip |
Add first of several ray cast/rendering files
Diffstat (limited to 'apps/graphics/traveler/include/trv_trigtbl.h')
-rw-r--r-- | apps/graphics/traveler/include/trv_trigtbl.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/apps/graphics/traveler/include/trv_trigtbl.h b/apps/graphics/traveler/include/trv_trigtbl.h index deac5a0fb..999270a12 100644 --- a/apps/graphics/traveler/include/trv_trigtbl.h +++ b/apps/graphics/traveler/include/trv_trigtbl.h @@ -45,6 +45,7 @@ /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ +/* Angles *******************************************************************/ /* These are definitions of commonly used angles. */ @@ -69,6 +70,63 @@ #define ANGLE_270 1440 #define ANGLE_360 1920 +/* Fixed precision definitions **********************************************/ + +/* SMALL precision (6 bits past binary point) */ +/* This occurs frequently because each CELL is 64x64 */ + +#define sUNITY 64 +#define sHALF 32 +#define sQUARTER 16 +#define sSHIFT 6 +#define sMASK 63 + +#define sTRUNC(a) ((a) >> sSHIFT) +#define sROUND(a) (((a) + sHALF) >> sSHIFT) +#define sFIX(a) ((a) << sSHIFT) +#define sSNAP(a) ((a) & (~sMASK)) +#define sFRAC(a) ((a) & sMASK) + +#define sMUL(a,b) (((int32_t)(a) * (int32_t)(b)) >> sSHIFT ) +#define sDIV(a,b) (((int32_t)(a) << sSHIFT) / (b)) +#define sFLOAT(a) ((float)(a) / (float)sUNITY) + +/* DOUBLE precision (12 bits past binary point) */ +/* This precision results when two SMALL precision numbers are multiplied */ + +#define dUNITY 4096 +#define dHALF 2048 +#define dSHIFT 12 +#define dMASK 4095 + +#define dTRUNC(a) ((a) >> dSHIFT) +#define dROUND(a) (((a) + dHALF) >> dSHIFT) +#define dFIX(a) ((a) << dSHIFT) +#define dSNAP(a) ((a) & (~dMASK)) +#define dFRAC(a) ((a) & dMASK) + +/* TRIPLE precision (18 bits past binary point) */ +/* This precision results when a SMALL and a DOUBLE precision number + * are multiplied + */ + +#define tSHIFT 18 + +/* QUAD precision (24 bits past binary point) */ +/* This precision results when two DOUBLE precision numbers are multiplied */ + +#define qSHIFT 24 + +/* BIG precision (16 bits past binary point) */ +/* This is convenient precision because it is easy to extract the integer + * portion without shifting or masking + */ + +#define bUNITY 65536 +#define bHALF 32768 +#define bSHIFT 16 +#define bMASK 65535 + /**************************************************************************** * Public Function Prototypes ****************************************************************************/ |