#include <stdio.h>
//x y 为Q8格式
//返回模长 角度 由最后两个变量返回指针值
int my_atan5(int x, int y,int * AP,int *XianP)
{
const int angle[] = {11520, 6801, 3593, 1824, 916, 458, 229, 115, 57, 29, 14, 7, 4, 2, 1};

int i = 0,j;
int x_new, y_new;
int angleSum = 0;if(y<0){y = -y; // 3 4j=1;
}
else{// 2 1j=0;
}if(x<0){x = -x; // 2 3 if(j == 0)j=2;else j= 3;
}
else{// 1 4if(j == 0)j=1;else j= 4;
}for(i = 0; i < 15; i++)
{if(y > 0){x_new = x + (y >> i);y_new = y - (x >> i);x = x_new;y = y_new;angleSum += angle[i];}else{x_new = x - (y >> i);y_new = y + (x >> i);x = x_new;y = y_new;angleSum -= angle[i];}
}

x *= 155;
x = x>>8;
*AP = angleSum;
*XianP = j;
return x;
}

int main()
{
int a,b,c;
/* 我的第一个 C 程序 */
a = my_atan5((0<<8),(8<<8),&b,&c);
printf(“第二象区 加90度 第三象区加180度 第四区加270度-45度 = 11520\n模长Sq8 = %d\n角度Aq8 = %d\n象区 =%d\n”,a,b,c);
return 0;
}

https://c.runoob.com/compile/11 可以这个网站 验证程序

程序中 角度用的是360度 Q8格式(实际值X256).由于int最大值 不能支持 360度 程序将所有度数控制在90度以内 实际度数按返回的象区 补偿上去然后格式转换成大一点的类型 比如LONG型 这个算法是CORDIC算法。是经典算法。本人是做单片机的 这个用来求 模电流做闭环。控制电机恒流运行。

三角函数 求模 和 求角度算法相关推荐

  1. matlab 求余集,求模和求余 - moziqi - OSCHINA - 中文开源技术交流社区

    一直以为求模和求余是一回事,发现这两者是不同的.以下为网上转载的资料: 通常情况下取模运算(mod)和求余(rem)运算被混为一谈,因为在大多数的编程语言里,都用'%'符号表示取模或者求余运算.在这里 ...

  2. 学习记录563@求模下指数幂的快速算法(求模指幂快速算法)

    令a,x,n 为正整数且 a < n.公钥密码体系常需要求模下指数署 axa^xax mod n,如果先求y=axa^xax再求y mod n则所需时间太多,y也太大,因为axa^xax mod ...

  3. 实数范围内(包含负数)的求模与求余运算异同

    以下内容主要总结整理自以下文献: 一.实数的取余运算 二.取模和取余的区别 三.负数.取模与取余 背景 最近在一道 Java 习题中,看到这样的一道题: What is the output when ...

  4. python中的除法,取整和求模

    本文为转载,原博客地址:https://blog.csdn.net/huzq1976/article/details/51581330 首先注明:如果没有特别说明,以下内容都是基于python 3.4 ...

  5. python中的除法、取整和求模_python中的除法,取整和求模

    首先注明:如果没有特别说明,以下内容都是基于python 3.4的. 先说核心要点: 1. /是精确除法,//是向下取整除法,%是求模 2. %求模是基于向下取整除法规则的 3. 四舍五入取整roun ...

  6. python中的除法、取整和求模_python中的除法,取整和求模-Go语言中文社区

    首先注明:如果没有特别说明,以下内容都是基于python 3.4的. 先说核心要点: 1. /是精确除法,//是向下取整除法,%是求模 2. %求模是基于向下取整除法规则的 3. 四舍五入取整roun ...

  7. 2---理解正余弦、复数求模、反正切和乘除运算的CORDIC算法实现

    CORDIC(Coordinate Rotation Digital Computer)算法是J.Volder在1956在航空控制系统设计中构思的,但其实相似的算法在更早的1624年就已经被Henry ...

  8. python:实现求模逆算法(附完整源码)

    python:实现求模逆算法 def gcd(a: int, b: int) -> int:while a != 0:a, b = b % a, a

  9. 快速幂算法和大整数求模

    ** 1.快速幂的算法** (1)当我们求一个数的n次方的的结果时,若直接选择for循环,来累乘的话,效率很低,时间复杂度位O(n),而当我们选择快速幂来计 算时,时间复杂度能达到O(logn),快了 ...

最新文章

  1. 关键数据保险箱,AD RMS服务器部署指南
  2. Struts 2 --ONGL介绍
  3. android 的view绘制逻辑
  4. 【Python】之split()方法
  5. 集合拆成固定长度的小集合_《集合啦动物森友会》钓鱼怎么玩?钓鱼小技巧攻略分享...
  6. 说一下php的自动加载,php的_autoload函数实现自动加载类的使用
  7. 静态成员函数与静态数据的使用
  8. linux 更改ssh端口_如何在Linux中更改SSH端口-简易指南
  9. LeetCode刷题——120. 三角形最小路径和
  10. 铁塔形变预警监测装置
  11. 计算机视觉与机器视觉的区别和联系
  12. IAR,STVD和STVP的使用
  13. 关于小学计算机论文题目,经典小学计算机课论文选题 小学计算机课论文题目怎样定...
  14. 葡萄柚能放冰箱保存吗 葡萄柚怎么保存时间长
  15. 超级计算机计算峰值,世界运算最快计算机,中国神威·太湖之光(其峰值计算速度达每秒1...
  16. 摩克机器人_第三章 摩克都市的一场灾难(上)
  17. 三分钟了解如何准备简历面试
  18. 华为日历登录qq邮箱的解决方案
  19. matlab里面的simu,matlab_commu_sim
  20. 网络服务器系统管理实训报告,网络系统管理与维护实训报告-20210726103142.docx-原创力文档...

热门文章

  1. 36.TodoList动画
  2. python实现动态壁纸_Python实现日历壁纸动态标记
  3. 反光板导航SLAM(四)如何通过两个反光柱估计位姿
  4. 全球免费公共【 DNS 】解析服务器 IP 地址列表推荐 【解决无法上网+加速+防劫持】
  5. 转自http://www.eaw.com.cn/news/display/article/10303有5402方面的文章 (对本人学习C有帮助!)
  6. UNIX时间和夏令时计算
  7. 华为设备密码认证模式
  8. 高德mesh添加纹理渐变颜色
  9. 8051单片机(STC89C52)八个LED灯闪烁
  10. [医械研发]关于产品技术要求,只看这一篇就够了!收藏+分享!