Necesito hacer transformaciones rotacionales (y otras) en una aplicación incrustada, que requiere las funciones sin () cos () y tan (). Sé que puede usar tablas de búsqueda, y esa es la única solución que podría encontrar haciendo mi propia investigación, pero ¿existe una buena biblioteca de trigonometría fija?
Estoy pensando en usar un cortex M3 para la aplicación, así que quiero mantenerme alejado del punto flotante tanto como sea posible para mantener las aplicaciones rápidas.
Respuestas:
Un buen enfoque para hacer trigonometría en aplicaciones integradas es utilizar aproximaciones polinómicas a las funciones que necesita. El código es compacto, los datos consisten en algunos coeficientes y las únicas operaciones requeridas son multiplicar y sumar / restar. Muchos sistemas integrados tienen multiplicadores de hardware, lo que brinda un buen rendimiento.
fuente
_Fract
es un pedazo de basura en mi humilde opinión; Odio el hecho de que fue "estandarizado" por el comité C. Te obliga a usar Q15 o Q31 para todo, lo que no tiene sentido en muchas situaciones, y te deja sin ayuda para esas situaciones.¿Se opone a usar las bibliotecas de punto fijo Cortex para esto?
desde:
Utiliza una tabla de búsqueda con interpolación cuadrática, pero es bastante rápida. Puede adaptarlo a la interpolación lineal para una velocidad más rápida pero con más errores.
También tenga en cuenta que incluso Cortex M4 no necesariamente tiene FPU. Los he visto llamados "M4F" si lo hacen.
fuente