Demo of low res colour vga video for stm32f3 discovery board
Dependencies: STM32F3-Discovery-minimal
Fork of Space_Invaders_Demo by
Diff: mth.c
- Revision:
- 0:404dae88af71
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mth.c Tue Mar 01 02:40:19 2016 +0000 @@ -0,0 +1,109 @@ +/*************************************************************************** + * STM32 VGA demo + * Copyright (C) 2012 Artekit Italy + * http://www.artekit.eu + * Written by Ruben H. Meleca + +### mth.c + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +***************************************************************************/ + +#include "mth.h" + +static const i16 SineTable[360] = + { + 0, 174, 348, 523, 697, 871, 1045, 1218, 1391, + 1564, 1736, 1908, 2079, 2249, 2419, 2588, 2756, 2923, + 3090, 3255, 3420, 3583, 3746, 3907, 4067, 4226, 4383, + 4539, 4694, 4848, 4999, 5150, 5299, 5446, 5591, 5735, + 5877, 6018, 6156, 6293, 6427, 6560, 6691, 6819, 6946, + 7071, 7193, 7313, 7431, 7547, 7660, 7771, 7880, 7986, + 8090, 8191, 8290, 8386, 8480, 8571, 8660, 8746, 8829, + 8910, 8987, 9063, 9135, 9205, 9271, 9335, 9396, 9455, + 9510, 9563, 9612, 9659, 9702, 9743, 9781, 9816, 9848, + 9876, 9902, 9925, 9945, 9961, 9975, 9986, 9993, 9998, + 10000, 9998, 9993, 9986, 9975, 9961, 9945, 9925, 9902, + 9876, 9848, 9816, 9781, 9743, 9702, 9659, 9612, 9563, + 9510, 9455, 9396, 9335, 9271, 9205, 9135, 9063, 8987, + 8910, 8829, 8746, 8660, 8571, 8480, 8386, 8290, 8191, + 8090, 7986, 7880, 7771, 7660, 7547, 7431, 7313, 7193, + 7071, 6946, 6819, 6691, 6560, 6427, 6293, 6156, 6018, + 5877, 5735, 5591, 5446, 5299, 5150, 5000, 4848, 4694, + 4539, 4383, 4226, 4067, 3907, 3746, 3583, 3420, 3255, + 3090, 2923, 2756, 2588, 2419, 2249, 2079, 1908, 1736, + 1564, 1391, 1218, 1045, 871, 697, 523, 348, 174, + 0, -174, -348, -523, -697, -871, -1045, -1218, -1391, + -1564, -1736, -1908, -2079, -2249, -2419, -2588, -2756, -2923, + -3090, -3255, -3420, -3583, -3746, -3907, -4067, -4226, -4383, + -4539, -4694, -4848, -4999, -5150, -5299, -5446, -5591, -5735, + -5877, -6018, -6156, -6293, -6427, -6560, -6691, -6819, -6946, + -7071, -7193, -7313, -7431, -7547, -7660, -7771, -7880, -7986, + -8090, -8191, -8290, -8386, -8480, -8571, -8660, -8746, -8829, + -8910, -8987, -9063, -9135, -9205, -9271, -9335, -9396, -9455, + -9510, -9563, -9612, -9659, -9702, -9743, -9781, -9816, -9848, + -9876, -9902, -9925, -9945, -9961, -9975, -9986, -9993, -9998, + -10000, -9998, -9993, -9986, -9975, -9961, -9945, -9925, -9902, + -9876, -9848, -9816, -9781, -9743, -9702, -9659, -9612, -9563, + -9510, -9455, -9396, -9335, -9271, -9205, -9135, -9063, -8987, + -8910, -8829, -8746, -8660, -8571, -8480, -8386, -8290, -8191, + -8090, -7986, -7880, -7771, -7660, -7547, -7431, -7313, -7193, + -7071, -6946, -6819, -6691, -6560, -6427, -6293, -6156, -6018, + -5877, -5735, -5591, -5446, -5299, -5150, -5000, -4848, -4694, + -4539, -4383, -4226, -4067, -3907, -3746, -3583, -3420, -3255, + -3090, -2923, -2756, -2588, -2419, -2249, -2079, -1908, -1736, + -1564, -1391, -1218, -1045, -871, -697, -523, -348, -174 + }; + +//***************************************************************************** +// Function mthSine(u16 angle) +// +// Return sine value from 'angle' parameter in degrees. The returned value +// is multiplied by 10000 (-10000..0..10000). The angle must be an integer +// value from 0 to 359. +// +// parameters: +// angle Angle value in degrees +// +// return: Sine +//***************************************************************************** +i16 mthSin(u16 angle) +{ + u16 a = (angle % 359); + + return SineTable[a]; +} + +//***************************************************************************** +// Function mthCos(u16 angle) +// +// Return cosine value from 'angle' parameter in degrees. The returned +// value is multiplied by 10000 (-10000..0..10000). The angle must be an +// integer value from 0 to 359 +// +// parameters: +// angle Angle value in degrees +// +// return: Cosine +//***************************************************************************** +i16 mthCos(u16 angle) +{ + u16 a = ((angle + 90) % 359); + + return SineTable[a]; +} + +