资源简介
atan2的查表法实现,支持宏定义调整精度,非常适合没有带FPU的MCU使用。
代码片段和文件信息
// ConsoleApplication4.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef float float32_t;
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#include “atan2_tab.h“
int main()
{
atan2_tab_init();
double res_lib;
double res_tab;
#define LUT_NUM 4096
#define PRICISION 0.001
for (int i = 0; i < LUT_NUM; i++)
{
//第一象限
res_lib = atan2(i (LUT_NUM - 1));
res_tab = atan2_tab_calc(i (LUT_NUM - 1));
if (fabs(res_lib - res_tab) > PRICISION)
{
printf(“第一象限x=%d y=%d\n diff:%.5f“ (LUT_NUM - 1) i fabs(res_lib - res_tab));
}
res_lib = atan2((LUT_NUM - 1) i);
res_tab = atan2_tab_calc((LUT_NUM - 1) i);
if (fabs(res_lib - res_tab) > PRICISION)
{
printf(“第一象限x=%d y=%d diff:%.5f\n“ i (LUT_NUM - 1) fabs(res_lib - res_tab));
}
//第二象限
res_lib = atan2(i -(LUT_NUM - 1));
res_tab = atan2_tab_calc(i -(LUT_NUM - 1));
if (fabs(res_lib - res_tab) > PRICISION)
{
printf(“第二象限x=%d y=%d diff:%.5f\n“ -(LUT_NUM - 1) i fabs(res_lib - res_tab));
}
res_lib = atan2((LUT_NUM - 1) -i);
res_tab = atan2_tab_calc((LUT_NUM - 1) -i);
if (fabs(res_lib - res_tab) > PRICISION)
{
printf(“第二象限x=%d y=%d diff:%.5f\n“ -i (LUT_NUM - 1) fabs(res_lib - res_tab));
}
//第三象限
res_lib = atan2(-i -(LUT_NUM - 1));
res_tab = atan2_tab_calc(-i -(LUT_NUM - 1));
if (fabs(res_lib - res_tab) > PRICISION)
{
printf(“第三象限x=%d y=%d diff:%.5f\n“ -(LUT_NUM - 1) -i fabs(res_lib - res_tab));
}
res_lib = atan2(-(LUT_NUM - 1) -i);
res_tab = atan2_tab_calc(-(LUT_NUM - 1) -i);
if (fabs(res_lib - res_tab) > PRICISION)
{
printf(“第三象限x=%d y=%d diff:%.5f\n“ -i -(LUT_NUM - 1) fabs(res_lib - res_tab));
}
//第四象限
res_lib = atan2(-i (LUT_NUM - 1));
res_tab = atan2_tab_calc(-i (LUT_NUM - 1));
if (fabs(res_lib - res_tab) > PRICISION)
{
printf(“1第四象限x=%d y=%ddiff:%.5f\n“ (LUT_NUM - 1) -i fabs(res_lib - res_tab));
}
res_lib = atan2(-(LUT_NUM - 1) i);
res_tab = atan2_tab_calc(-(LUT_NUM - 1) i);
if (fabs(res_lib - res_tab) > PRICISION)
{
printf(“2第四象限x=%d y=%d diff:%.5f\n“ -i (LUT_NUM - 1) fabs(res_lib - res_tab));
res_lib = atan2(-(LUT_NUM - 1) i);
res_tab = atan2_tab_calc(-(LUT_NUM - 1) i);
}
res_lib = atan2((LUT_NUM - 1) -4094);
res_tab = atan2_tab_calc((LUT_NUM - 1) -4094);;
res_lib = atan2(-(LUT_NUM - 1) 208);
res_tab = atan2_tab_calc(-(LUT_NUM - 1) 208);
}
system(“pause“);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2866 2018-10-13 18:45 atan2_lut_test.cpp
文件 2404 2018-10-13 18:39 atan2_tab.cpp
文件 822 2018-10-13 18:39 atan2_tab.h
- 上一篇:室内定位技术论文
- 下一篇:ecshop分类按拼音索引
相关资源
- 利用模拟退火算法实现矩形件排样问
- 归一化算法代码,用于图像归一化
- 算法之美:指导工作与生活
- 遗传算法在多目标01背包问题中的应用
- Delphi7 神经网络算法之共轭梯度法源码
- 跟踪遮挡目标的一种鲁棒算法1
- 基于纹理方向的图像修复算法
- Charles Elkan的快速k-means算法的代码
- Landsat8地表温度反演单窗算法工具
- 考研数据结构算法总结.pdf完美版
- jpeg算法与实现 图像压缩编码
- 基于goertzel 算法的信号检测方法
- 比较实用的室内定位算法代码。有详
- 随机游走算法
- 无线传感网络虚拟力粒子群算法
- n皇后,哈密尔顿回路,0/1背包,图的
- 改进的denaulay三角网渐次插入生成算法
- 计算机硬件课程设计 算法逻辑单元
- AES加密算法verilog实现
- Alpha_Beta算法实现人工智能作业
- 无线传感器网络经典的TPSN同步算法原
- 人工智能_滑动积木块—A*算法
- DES算法实现报告实现加密以及解密的
- libsvm算法说明.pdf
- 遗传算法与粒子群神经网络的混合算
- 动态规划的算法解决多段图问题
- 亚像素图像配准算法研究
- 基于扩频的BMP图像隐写算法
- LINUX下完整的人脸识别算法保证可以用
- 基于遗传算法的飞机滑行路径优化
评论
共有 条评论