对CAD圆弧直线不了解的朋友可以先阅读以下博文:

https://blog.csdn.net/iloveas2014/article/details/103837857

https://blog.csdn.net/iloveas2014/article/details/103848611

在上篇的末尾,我提到了线条端点处的切线在寻找封闭图形中的重要性,但没给出任何解释,为此我转发一篇博文。

https://blog.csdn.net/keng_s/article/details/67102867

大家在阅读的过程中可以看到其中的一步是要对线条进行角度排序。对于直线线段来说,角度取两点的连线即可,而曲线则不能再取连线了。大家看下面的图。

我们想要把AB,弧AC,AD三条线在A端点处按顺时针排序,正确的结果是AB,AC,AD,但若用连线AC来作为排序依据的话,那么顺序就变成AC,AB,AD了。

所以要改用弧AC在A点处的切线AC'来计算角度,如下图所示。

下面我们来尝试计算圆弧直线在端点上的切线斜率,显然当圆弧的凸度趋于0时,圆弧变为直线,切线跟连线的方向一致,如下面的动图所示。

求切线斜率,相信大家都会想到用求导的方法,不过圆弧是多值函数,所以计算的方法也特殊一些。

总的来说,要计算这种曲线的切线及其趋于直线时的极限,我想到的方法有3种:

1 利用圆弧切线的几何性质——跟切点上的半径垂直进行计算,然后计算bulge趋于0时的极限

2 对圆弧直线的一般方程进行隐函数的求导

3 把圆弧直线的一般方程看作二元函数,然后求出其偏导数,再根据以下公式求得y对x的导数

方法2和方法3其实都是隐函数的求导,只是3更为简便,同时也更难理解,毕竟涉及了二元函数。

此处我们使用方法2。感兴趣的朋友可以自行用方法1或者方法3来推导,也可以留言跟我讨论。

我们把二元二次方程的一般式搬过来,在最普通的情况下进行求导。然后,圆和直线都不包含xy项,可以省略

两侧对x进行求导,得到

然后我们把圆弧曲线中对应的系数代进去

至此,圆弧直线在线上任一点(x,y)的切线斜率就算出来了。

然而这个式子还是蛮复杂的,但是我们用得最多的一般都是起点和终点,那么我们分别把(sx,sy)和(ex,ey)代进去算一下。

看着还是蛮复杂,但是起点和终点都是常量,因此在编程的时候我们可以把起点和终点的差值用一个向量(Δx,Δy)存起来从而让代码更清晰。那么这里的公式也能简写为

这样就简洁多了,类似地,终点的导数结果为

y's,y'e这两个导数值的意义是圆弧在S和E处的切线斜率,如下图的红线和蓝线所示。

然后我们算一下它们在b趋于0的时候等于多少。

它们在凸度趋于0的时候都等于起点和终点连线的斜率,跟我们的期望完全一致。

然而问题并没到此结束,因为算出来的切线没有方向,而进行角度排序的时候我们需要给出的是指定方向的切线向量,如下图所示,我们要的是AC'和水平线的夹角而非AC''

切线斜率并没有给出它们的方向,所以在项目里我用的是方法1,从而更好地对x和y的方向分别进行把控。

那么此处我就不在推导的情况下给出切线向量的结果,其实只是把导数结果拆出来,并且根据不同情况对xy给出不同的符号

起点的切线向量为

终点的切线向量为

跟导数的分子分母对照下,可以发现,起点刚好是把分子分母拆开,而终点则是把分子分母拆开后再分别取反。所以说这地方其实还是存在着很微妙的规律,就留给读者们慢慢品味了。

下篇我会给大家讲解圆弧直线的等分公式及其在趋于直线时的极限,敬请期待!

让微积分穿梭于工作与学习之间(17):圆弧直线在端点处的切线及其在趋于直线时的极限相关推荐

  1. 让微积分穿梭于工作与学习之间(13):带圆弧多边形的面积计算(上)

    上篇我用了抛物线作为曲边,那理所当然地我们该用微积分来计算.但是如果换成圆弧,那我们可能还会想着能不能用回初等的方法来求解呢? 答案是可以,但是你会发现这将变得非常麻烦.不过有的人(包括为我)一开始总 ...

  2. 让微积分穿梭于工作与学习之间(14):带圆弧多边形的面积计算(下,多值函数的情况)

    这篇我们来研究下如何让多值函数在不拆分的情况下也能进行计算,毕竟曲线情况复杂了之后,拆分不一定是件容易的事情. 在上篇我们对圆方程进行积分的时候,为了去掉其中的根号,我们用了三角换元的方法. 这里我们 ...

  3. 让微积分穿梭于工作与学习之间(12):从直边三角形到曲边三角形的面积计算

    上篇的末尾,我感觉写得难了.然后我想了想,在这篇开始曲边图形的面积计算之前,我拿一些具体的数字来演示上篇的直边三角形计算原理,这样好让大家有个过渡. 我们来看看下图这个三角形,用小学的公式来算非常简单 ...

  4. 让微积分穿梭于工作与学习之间(8):我自认为牛逼的成果之四:直接用定义求反正弦函数的导数

    大部分教材已经明确指出,用定义法计算稍复杂的函数的导数一般都很困难.前面给出的正切函数,由于它有和差展开式,所以虽然展开后繁琐了点,但仍然可以继续化简得到最终结果,而反三角函数则不一样了.arcsin ...

  5. 让微积分穿梭于工作与学习之间(31):无穷-无穷,两根式相减的求解套路

    这篇的内容无异于上学时大家做到吐血的数学习题,此处插播一篇纯习题的文章,仅为后续的一个应用打下基础. 在微积分课程介绍极限的章节中,教材会给出无穷-无穷&两根式相减这一类极限的例子,并给出利用 ...

  6. 让微积分穿梭于工作与学习之间(10):在椭圆弧上做匀速运动,我就无能为力了

    在曲线上做匀速运动(其实匀速有两种情况,一种是匀速度,一种是匀速率,这里讲的是后者,即按长度等分),就要求得曲线的长度,然后算出等分的位置从而把效果实现出来. 这是动画制作软件的常用功能,所以肯定有成 ...

  7. 让微积分穿梭于工作与学习之间(29):夹逼公式的几种变体

    对CAD圆弧直线不了解的朋友可以先阅读以下博文: https://blog.csdn.net/iloveas2014/article/details/103837857 https://blog.cs ...

  8. 莫等闲 - 什么是工作和学习之间的适当平衡?

    什么是工作和学习之间的适当平衡? 2020年11月16日 作者:Phillip Johnston - 最后更新:2021年6月10日 我们的一个成员问我这个问题. 我已经开始在我的主要工作之外接一些自 ...

  9. 工作和学习矛盾之我见

    LZ最近两天工作有点儿心不在焉,不在状态,对此LZ对老板.经理.老大说声抱歉. 从一踏入社会工作,我就告诫自己一定要认真工作.努力学习,尽最大努力提升自己,尽早实现自己的目标.所以我在经常利用工作以外 ...

  10. 一个测试员的工作与学习

    其实,只是想写写自己的从事测试工作与学习经历,算做回顾吧!我怕时间久了自己做了什么都不知道. 初做测试                                                  ...

最新文章

  1. Caffe使用step by step:caffe框架下的基本操作和分析
  2. 【数据结构与算法】之判断一个整数是否是 4 的幂次方的高逼格算法
  3. 关于Struts+Spring+Hibernate的理解
  4. hive shell 导入数据
  5. XML和HTML的区别
  6. mt7620n华硕固件下载_华硕TUFAX3000最新固件9923刺客模式解锁44 AX5400?
  7. SQL Server 安全篇——安全元数据(2)——安全对象(Securable)元数据
  8. 搭建Vgg16训练CIFAR10数据集
  9. 设计一个简易的网吧计费系统
  10. cad插入块_CAD图块全攻略:别羡慕我下班早,我的CAD软件会开挂
  11. HDU-3237 Help Bubu(状压dp)
  12. 名师出高徒,我相信努力的我,会是高徒中的一员。
  13. intent-filter属性介绍
  14. 悬浮组件 - gitter 在线交流
  15. 如何安装最新版本的office(preview预览版)、更新
  16. 计算机社团活动展望未来,社团展望未来演讲稿(2)
  17. 2020-08-13 图像处理入门软件应该怎么选?Opencv matlab 和Python
  18. 一切都结束了。OI退役感言。
  19. Odoo产品分析 (三) -- 人力资源板块(6) -- 工资表(2)
  20. 计算机中用于汉字处理的是什么意思,用于汉字输出的是什么编码

热门文章

  1. 单细胞测序数据的差异表达分析方法总结
  2. [LaTeX科研入门02]:中文处理办法
  3. htc e9刷android6,HTC One E9+(E9pw 联通4G)刷机图文详解教程
  4. Block Breaker HDU - 6699
  5. 语音助手项目实战:利用Google API进行语音合成与TTS技术
  6. 【笔记】南大操作系统jyy
  7. iOS调试——适配iOS11,iPhoneX问题及解决办法
  8. 面试:TCP/UDP如何解决丢包问题?
  9. Greenplum实战--5.10集群安装完整版
  10. 修复 WordPress 的 is_dir(): open_basedir restriction in effect. 错误