智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1857|回复: 4
打印 上一主题 下一主题

[策略类] 关于电磁组反正弦的一点想法

[复制链接]

27

主题

244

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6556

论坛元老奖章热心会员奖章

QQ
威望
1277
贡献
4939
兑换币
188
注册时间
2011-12-31
在线时间
170 小时
跳转到指定楼层
1#
发表于 2012-2-14 11:56:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <math.h>
  2. #define DIV 100                  //细分设置
  3. /*
  4. * 开始前先运行arc_sin_init(),生成tab_arc_sin数据表
  5. * 通过设置细分DIV的值设置运算的精度
  6. * 调用arc_sin()得到反正弦函数的值
  7. * 注意:1、这里只是提供一种方法,不保证程序的正确性和可行性
  8. *                  2、将DIV的值设为2的幂,如(2^7=128),angle*N可由移位得到,提高计算效率
  9. */
  10. void arc_sin_init(void){
  11.         unsigned int n;
  12.         unsigned int N = DIV;
  13.         float tab_arc_sin[N];
  14.         for(n=0;n<N;n++){
  15.                 tab_arc_sin[n]=arcsin((float)(n/N));
  16.         }
  17. }

  18. float arc_sin(float angle){                  //-1<=angle<=1
  19.         if(angle>=0){
  20.                 return(tab_arc_sin[unsigned int(angle*N)]);       
  21.         }else{
  22.                 return(tab_arc_sin[unsigned int(-angle*N)]);
  23.         }
  24. }
复制代码



补充内容 (2012-2-14 16:03):
第21、23行有错,中括号中应该是强制类型转换

19

主题

667

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2730

热心会员奖章特殊贡献奖章论坛骨干奖章推广达人奖章在线王奖章活跃会员奖章优秀会员奖章

威望
1504
贡献
364
兑换币
29
注册时间
2012-2-4
在线时间
431 小时
毕业学校
外国语学校
2#
发表于 2012-2-14 12:05:38 | 只看该作者
貌似不错!不知道运算速度怎么样?
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

高级会员

Rank: 4

积分
508
威望
318
贡献
94
兑换币
0
注册时间
2012-2-2
在线时间
48 小时
毕业学校
东南大学
3#
发表于 2012-2-14 13:16:37 | 只看该作者
能不能直接计算,初始化数组
回复 支持 反对

使用道具 举报

27

主题

244

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6556

论坛元老奖章热心会员奖章

QQ
威望
1277
贡献
4939
兑换币
188
注册时间
2011-12-31
在线时间
170 小时
4#
 楼主| 发表于 2012-2-14 15:09:56 | 只看该作者
jinkyu 发表于 2012-2-14 13:16
能不能直接计算,初始化数组

当然,我的意思就是将反正弦的值先存放在数组中,然后再根据要求的反正弦直接从数组中查找,只不过要手动把这么多值输入到数组里面。。。工作量。。。所以刚开始的时候先把所有要计算的反正弦值先计算出来,存入数组,将来用的话直接查表,计算应该可以快点。。。
回复 支持 反对

使用道具 举报

27

主题

244

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6556

论坛元老奖章热心会员奖章

QQ
威望
1277
贡献
4939
兑换币
188
注册时间
2011-12-31
在线时间
170 小时
5#
 楼主| 发表于 2012-2-14 15:17:50 | 只看该作者
PS:实际中小车的角度不会偏太大(太大就要倒了),angle估计在-10度~+10度之间(具体值我也不清,隐隐约约好像记得5度还是10度来的,保险起见取大点,不差空间。。。s12xs128有128k空间呢!取正负九十度也不怕),所以实际数组中需要存放的数据并不太多(只要-10~+10之间的),这样也可以提高精度(不用担心数据量太大)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-16 00:14 , Processed in 0.047723 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表