智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 10851|回复: 25
打印 上一主题 下一主题

[资源] 曲率计算

  [复制链接]

22

主题

242

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2785

优秀会员奖章

威望
534
贡献
1925
兑换币
20
注册时间
2009-10-12
在线时间
163 小时
跳转到指定楼层
1#
发表于 2010-5-15 16:57:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是第三届东北大学三点法算曲率的代码


研究了一下,基本看不懂,只知道他是求的三角形外接圆半径作为曲率半径,大部分代码都是做处理的,确保取得点是正确的,里面有一点我的注释,不知正确与否(原文无一点注释),那位强人能帮忙讲下不???大家一起研究下




  1. //东北大学猎豹队
  2. /*
  3. void CountCurvature(uchar i1,uchar i2) // i1起始行,i2结束行
  4. {
  5. uchar mid; //临时值,辅助作用
  6. int dx1,dx2,dx3,dy1,dy2,dy3; //三点坐标,用起始行和结束行表示的???

  7. //应该是确保三点是稳定的点的

  8. if(i1>i2)
  9. { //i1>i2,则交换
  10. mid=i1;
  11. i1=i2;
  12. i2=mid;
  13. }
  14. //如果取得行数超过7行,则取中间行作为另一个点的位置
  15. if(i1+6<=i2)
  16. {
  17. mid=(uchar)((i1+i2)/2); //取始末点行数的一半为之间点的行数,为uchar型的


  18. dx1=(mid-i1)*3; //
  19. dx2=(i2-i1-1)*3;
  20. dx3=(i2-mid-1)*3;
  21. dy1=(BlackDrift[mid]+BlackDrift[mid+1]-BlackDrift[i1]-BlackDrift[i1+1])/2; //BlackDrift 黑线趋势
  22. dy2=(BlackDrift[i2]+BlackDrift[i2-1]-BlackDrift[i1]-BlackDrift[i1+1])/2;
  23. dy3=(BlackDrift[i2]+BlackDrift[i2-1]-BlackDrift[mid]-BlackDrift[mid+1])/2;


  24. PreCurvatureNum=dx1*dy2-dx2*dy1;
  25. dy1/=2;
  26. dy2/=2;
  27. dy3/=2;

  28. //Curvature 曲率

  29. PreCurvatureDen=(long)m_sqrt(dx1*dx1+dy1*dy1)*m_sqrt(dx2*dx2+dy2*dy2)*m_sqrt(dx3*dx3+dy3*dy3);
  30. if(PreCurvatureNum==0)
  31. Curvature=0;
  32. else
  33. {
  34. if(PreCurvatureDen>10000)
  35. {
  36. PreCurvatureNum=PreCurvatureNum*90/(PreCurvatureDen/100);
  37. Curvature=(int)PreCurvatureNum;
  38. }
  39. else
  40. {
  41. PreCurvatureNum=PreCurvatureNum*9000/PreCurvatureDen;
  42. Curvature=(int)PreCurvatureNum;
  43. }
  44. }
  45. if(Curvature<-99)
  46. Curvature=-99;
  47. else if(Curvature>99)
  48. Curvature=99;
  49. CurvatureCache[3]=CurvatureCache[2];
  50. CurvatureCache[2]=CurvatureCache[1];
  51. CurvatureCache[1]=CurvatureCache[0];
  52. if(i2-i1<=6)
  53. CurvatureCache[0]=(Curvature*5+CurvatureCache[1]*5)/10;
  54. else if(i2-i1<=10)
  55. CurvatureCache[0]=(Curvature*6+CurvatureCache[1]*4)/10;
  56. else if(i2-i1<=14)
  57. CurvatureCache[0]=(Curvature*7+CurvatureCache[1]*3)/10;
  58. else if(i2-i1<=18)
  59. CurvatureCache[0]=(Curvature*8+CurvatureCache[1]*2)/10;
  60. else
  61. CurvatureCache[0]=Curvature;
  62. if(CurvatureCache[0]>99)
  63. CurvatureCache[0]=99;
  64. else if(CurvatureCache[0]<-99)
  65. CurvatureCache[0]=-99;
  66. }
  67. DiffCurvature=(2*CurvatureCache[0]-CurvatureCache[1]-CurvatureCache[2])/3;
  68. }

复制代码

8

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
564
威望
408
贡献
102
兑换币
6
注册时间
2010-1-12
在线时间
27 小时
2#
发表于 2010-5-31 14:32:22 | 只看该作者
呵呵!
回复 支持 反对

使用道具 举报

1

主题

52

帖子

0

精华

中级会员

学生

Rank: 3Rank: 3

积分
263
威望
223
贡献
24
兑换币
0
注册时间
2009-3-1
在线时间
8 小时
3#
发表于 2010-6-2 19:49:36 | 只看该作者
值得研究一下
回复 支持 反对

使用道具 举报

1

主题

52

帖子

0

精华

中级会员

学生

Rank: 3Rank: 3

积分
263
威望
223
贡献
24
兑换币
0
注册时间
2009-3-1
在线时间
8 小时
4#
发表于 2010-6-2 19:49:38 | 只看该作者
值得研究一下
回复 支持 反对

使用道具 举报

6

主题

713

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1498
威望
991
贡献
467
兑换币
30
注册时间
2010-4-13
在线时间
20 小时
5#
发表于 2010-6-3 11:19:29 | 只看该作者
很有用
回复 支持 反对

使用道具 举报

5

主题

335

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1048
威望
572
贡献
400
兑换币
0
注册时间
2010-5-30
在线时间
38 小时
6#
发表于 2010-7-12 19:31:28 | 只看该作者
关注
回复 支持 反对

使用道具 举报

1

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1798
威望
235
贡献
1549
兑换币
4
注册时间
2008-5-29
在线时间
7 小时
7#
发表于 2010-8-1 08:54:17 | 只看该作者
我已经在另一个帖子中进行了解释。

http://www.znczz.com/thread-13925-1-1.html
回复 支持 反对

使用道具 举报

22

主题

242

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2785

优秀会员奖章

威望
534
贡献
1925
兑换币
20
注册时间
2009-10-12
在线时间
163 小时
8#
 楼主| 发表于 2010-8-3 21:39:28 | 只看该作者
回复 7# hwqdg


    谢了
回复 支持 反对

使用道具 举报

3

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
397
威望
283
贡献
56
兑换币
2
注册时间
2010-10-6
在线时间
29 小时
9#
发表于 2010-10-24 18:28:55 | 只看该作者
ding
回复 支持 反对

使用道具 举报

0

主题

52

帖子

0

精华

高级会员

Rank: 4

积分
516
QQ
威望
359
贡献
109
兑换币
23
注册时间
2008-12-18
在线时间
24 小时
10#
发表于 2010-11-3 10:39:04 | 只看该作者
谢谢楼主
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-2 01:42 , Processed in 0.061736 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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