mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-14 06:42:58 +08:00
83 lines
2.0 KiB
C
83 lines
2.0 KiB
C
|
|
/**
|
|
* @file lv_trigo.c
|
|
* Basic trigonometric integer functions
|
|
*/
|
|
|
|
/*********************
|
|
* INCLUDES
|
|
*********************/
|
|
#include "lv_trigo.h"
|
|
|
|
/*********************
|
|
* DEFINES
|
|
*********************/
|
|
|
|
/**********************
|
|
* TYPEDEFS
|
|
**********************/
|
|
|
|
/**********************
|
|
* STATIC PROTOTYPES
|
|
**********************/
|
|
|
|
/**********************
|
|
* STATIC VARIABLES
|
|
**********************/
|
|
static int16_t sin0_90_table[] =
|
|
{
|
|
0, 572, 1144, 1715, 2286, 2856, 3425, 3993, 4560, 5126,
|
|
5690, 6252, 6813, 7371, 7927, 8481, 9032, 9580, 10126, 10668,
|
|
11207, 11743, 12275, 12803, 13328, 13848, 14364, 14876, 15383, 15886,
|
|
16383, 16876, 17364, 17846, 18323, 18794, 19260, 19720, 20173, 20621,
|
|
21062, 21497, 21925, 22347, 22762, 23170, 23571, 23964, 24351, 24730,
|
|
25101, 25465, 25821, 26169, 26509, 26841, 27165, 27481, 27788, 28087,
|
|
28377, 28659, 28932, 29196, 29451, 29697, 29934, 30162, 30381, 30591,
|
|
30791, 30982, 31163, 31335, 31498, 31650, 31794, 31927, 32051, 32165,
|
|
32269, 32364, 32448, 32523, 32587, 32642, 32687, 32722, 32747, 32762
|
|
};
|
|
|
|
|
|
/**********************
|
|
* MACROS
|
|
**********************/
|
|
|
|
/**********************
|
|
* GLOBAL FUNCTIONS
|
|
**********************/
|
|
|
|
/**
|
|
* Return with sinus of an angle
|
|
* @param angle
|
|
* @return sinus of 'angle'. sin(-90) = -32767, sin(90) = 32767
|
|
*/
|
|
int16_t lv_trigo_sin(int16_t angle)
|
|
{
|
|
int16_t ret = 0;
|
|
angle = angle % 360;
|
|
|
|
if(angle < 0) angle = 360 + angle;
|
|
|
|
if(angle < 90){
|
|
ret = sin0_90_table[angle];
|
|
} else if(angle >= 90 && angle < 180)
|
|
{
|
|
angle = 179 - angle;
|
|
ret = sin0_90_table[angle];
|
|
} else if(angle >= 180 && angle < 270)
|
|
{
|
|
angle = angle - 180;
|
|
ret = - sin0_90_table[angle];
|
|
} else { /*angle >=270*/
|
|
angle = 359 - angle;
|
|
ret = - sin0_90_table[angle];
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
|
|
/**********************
|
|
* STATIC FUNCTIONS
|
|
**********************/
|