请选择 进入手机版 | 继续访问电脑版

12360技术网 - 专业IT技术发表平台

 立即注册  找回密码
查看: 6666|回复: 3

让微积分穿梭于工作与学习之间(20):圆弧直线的曲率及其在趋于直线时的极

[复制链接]

14

主题

27

帖子

325

积分

中级会员

Rank: 3Rank: 3

积分
325
发表于 2020-1-26 22:31:20 | 显示全部楼层 |阅读模式
对CAD圆弧直线不了解的朋友可以先阅读以下博文:
https://blog.csdn.net/iloveas2014/article/details/103837857
https://blog.csdn.net/iloveas2014/article/details/103848611
曲率对于一般的编程人员来说似乎已经过于高深,但是我们的项目中还是用到了。
在第17篇中,我们指出了按角度排序需要用到圆弧的切线,但是随着问题的逐步深入,仅仅算切线是不够的。因为不同的线条,切线可能完全重合,如下图所示,AB,AC,AD,AE的切线均为AD,所以单算切线无法得到角度排序的结果。

但是它们的“角度”大小是不一样的,AE往着负方向(此处假定逆时针为负)弯曲的速度比AC要快,所以AE要排在AC的前面,然后AD完全没弯曲,所以AD在AC的后面。然后AB虽然也有弯曲,但它是往着正向去弯曲的,因此需要排在AD的后面。
数学教材中指出,一阶导数反映的是变速直线运动的瞬时速度,而反映瞬时加速度的,则是二阶导数了。然后这里我们用了一阶导数求得弧线的角度,那么角度的变化速度,我就很理所当然地套用了二阶导数了。结果发现怎么算都是不对的。究其原因,是在于二阶导数所提及的加速度仅仅是变速直线运动,如果不是直线,那么就需要通过类似于正交分解的方法分成两个方向单独计算。而此处我们要研究的是角度变化,因此直接套二阶导数并不合适。
角度的变化速度,数学上已经有现成的概念了,它被定义为曲率K,计算方法如下。

这个公式在实际中不太好操作,因此有化为用导数计算的式子。

可见它也用到了二阶导数。
现在我们的圆弧直线方程是一个多值的隐函数,二阶导数的求解会过于繁琐,所以此处我打算偷懒一下,直接利用一个现成的结论,就是圆的曲率处处相等,并且等于半径的倒数。

这次,我们的R不再取标准位置的值了,而以一般的位置代之,其结果在上一篇有推导过,我们把它搬过来。

于是有

大家可能会发现,我这个地方写得并不严谨,因为按定义,曲率是不存在负数的,半径也是,但是凸度可正可负,当b取负数的时候,半径和曲率都变负数了。我从15篇开始,全程都没加绝对值符号对此进行控制,其实是为了贪图方便。毕竟在很多场合,如果这些变量被绝对值号统一成非负数了,那么到后面又得重新分开情况讨论,从而对我们研究核心问题带来太多的干扰。
那串长长的根号大家不用怕,也就是一个常量而已。我们在这个公式下对取b趋于0时的极限看看。

也就是说,弧线趋于直线的时候,曲率趋于0,这跟直线的曲率处处为0的结论相吻合。
由于这里的K可正可负,所以本文开头给出的图里面,弯曲的方向也能通过K的符号获取得到(说白了就是看b的符号)。然后在项目中,我们还需要注意一点,如果图中的A点是某条弧线(比如AB)的终点而非起点,那么从B到A的走向将和b的符号相反,此时需要取反一下K值才能得到正确的结果。
虽然半径趋于无穷导致1/R无法在非数学编程语言中无法计算(少数是支持的,我用的AS计算1/无穷大可以得到0),但是当它变成b的表达式之后,我们发现其极限完全可以用纯初等函数的表达式进行代入得到,因此曲率无须用if进行区分。
                                                                                                                        
                                                    
  • 点赞                        
  • 收藏                        
  • 分享                                                                                                                        
  •                                                         
                                      
    • 文章举报                           
                                                
                                                                        
                                            
                                                        iloveas2014                                                                发布了82 篇原创文章 · 获赞 15 · 访问量 3万+                                                                                            私信                                                            关注
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x




上一篇:第一阶段:JAVA 快速入门(第十五课:必备技能DOS命令)
下一篇:HDU-4336 Min-Max容斥
回复

使用道具 举报

0

主题

16

帖子

346

积分

中级会员

Rank: 3Rank: 3

积分
346
发表于 2020-1-29 21:09:54 | 显示全部楼层
感谢楼主的无私分享![www.12360.co]
回复

使用道具 举报

0

主题

14

帖子

304

积分

中级会员

Rank: 3Rank: 3

积分
304
发表于 2020-2-2 22:30:50 | 显示全部楼层
其实我一直觉得楼主的品味不错!呵呵![www.12360.co]
回复

使用道具 举报

0

主题

12

帖子

262

积分

中级会员

Rank: 3Rank: 3

积分
262
发表于 5 天前 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享![www.12360.co]
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12360技术网

GMT+8, 2020-2-22 11:59 , Processed in 0.127855 second(s), 26 queries .

本网站内容收集于互联网,Www.12360.Co不承担任何由于内容的合法性及健康性所引起的争议和法律责任。 欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。

© 2019-2020 Www.12360.Co

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