让微积分穿梭于工作与学习之间(29):夹逼公式的几种变体
对CAD圆弧直线不了解的朋友可以先阅读以下博文:
https://blog.csdn.net/iloveas2014/article/details/103837857
https://blog.csdn.net/iloveas2014/article/details/103848611
前面的两个公式(弧长,定比分点)在推导的过程中,为了适应夹逼公式,我们做了一些比较刻意的变换,这些变换有时候是不积极的,因为它们可能会带来更多的性能损耗或者精度损失。
比如
又如反三角函数的
这些变换虽然是预先手算完成,但是写到代码上可能还不如分开条件判断。
如果不是刻意追求只能有一条夹逼公式的话,那么我们完全可以多定义几种夹逼公式以便在不用的地方使用。
这里我给出6个夹逼公式,其中第一个不是变体。
function 正弦夹逼公式(x){return x != 0 ? Math.sin(x) / x : 1;
}function 正切夹逼公式(x){return x != 0 ? Math.tan(x) / x : 1;
}function 反正弦夹逼公式(x){return x != 0 ? Math.asin(x) / x : 1;
}function 反正切夹逼公式(x){return x != 0 ? Math.atan(x) / x : 1;
}function 双正弦夹逼公式(k1, k2, x){return x != 0 ? Math.sin(k1 * x) / Math.sin(k2 * x) : (k1 / k2);
}function 双正切夹逼公式(k1, k2, x){return x != 0 ? Math.tan(k1 * x) / Math.tan(k2 * x) : (k1 / k2);
}
有了这些变体,我们的一些公式写起来会更加方便。比如弧长公式,现在的是
CircleArcStraightLine.prototype.arcLength = function(){//s为起点,e为终点,b为凸度var straightLength = Math.sqrt((this.e.x - this.s.x) * (this.e.x - this.s.x) + (this.e.y - this.s.y) * (this.e.y - this.s.y)); var u = Math.atan(b);return straightLength / 夹逼公式(u) * Math.sqrt(1 + this.b * this.b);
}
改用变体后,就变成
CircleArcStraightLine.prototype.arcLength = function(){//s为起点,e为终点,b为凸度var straightLength = Math.sqrt((this.e.x - this.s.x) * (this.e.x - this.s.x) + (this.e.y - this.s.y) * (this.e.y - this.s.y)); return straightLength / 正切夹逼公式(b) * (1 + this.b * this.b);
}
定比分点能简单更多,读者可以自行尝试。
下一篇我打算把投影面积也用夹逼公式算出来,敬请期待!
让微积分穿梭于工作与学习之间(29):夹逼公式的几种变体相关推荐
- 让微积分穿梭于工作与学习之间(8):我自认为牛逼的成果之四:直接用定义求反正弦函数的导数
大部分教材已经明确指出,用定义法计算稍复杂的函数的导数一般都很困难.前面给出的正切函数,由于它有和差展开式,所以虽然展开后繁琐了点,但仍然可以继续化简得到最终结果,而反三角函数则不一样了.arcsin ...
- 让微积分穿梭于工作与学习之间(14):带圆弧多边形的面积计算(下,多值函数的情况)
这篇我们来研究下如何让多值函数在不拆分的情况下也能进行计算,毕竟曲线情况复杂了之后,拆分不一定是件容易的事情. 在上篇我们对圆方程进行积分的时候,为了去掉其中的根号,我们用了三角换元的方法. 这里我们 ...
- 让微积分穿梭于工作与学习之间(13):带圆弧多边形的面积计算(上)
上篇我用了抛物线作为曲边,那理所当然地我们该用微积分来计算.但是如果换成圆弧,那我们可能还会想着能不能用回初等的方法来求解呢? 答案是可以,但是你会发现这将变得非常麻烦.不过有的人(包括为我)一开始总 ...
- 让微积分穿梭于工作与学习之间(12):从直边三角形到曲边三角形的面积计算
上篇的末尾,我感觉写得难了.然后我想了想,在这篇开始曲边图形的面积计算之前,我拿一些具体的数字来演示上篇的直边三角形计算原理,这样好让大家有个过渡. 我们来看看下图这个三角形,用小学的公式来算非常简单 ...
- 让微积分穿梭于工作与学习之间(31):无穷-无穷,两根式相减的求解套路
这篇的内容无异于上学时大家做到吐血的数学习题,此处插播一篇纯习题的文章,仅为后续的一个应用打下基础. 在微积分课程介绍极限的章节中,教材会给出无穷-无穷&两根式相减这一类极限的例子,并给出利用 ...
- 让微积分穿梭于工作与学习之间(10):在椭圆弧上做匀速运动,我就无能为力了
在曲线上做匀速运动(其实匀速有两种情况,一种是匀速度,一种是匀速率,这里讲的是后者,即按长度等分),就要求得曲线的长度,然后算出等分的位置从而把效果实现出来. 这是动画制作软件的常用功能,所以肯定有成 ...
- 莫等闲 - 什么是工作和学习之间的适当平衡?
什么是工作和学习之间的适当平衡? 2020年11月16日 作者:Phillip Johnston - 最后更新:2021年6月10日 我们的一个成员问我这个问题. 我已经开始在我的主要工作之外接一些自 ...
- 工作和学习矛盾之我见
LZ最近两天工作有点儿心不在焉,不在状态,对此LZ对老板.经理.老大说声抱歉. 从一踏入社会工作,我就告诫自己一定要认真工作.努力学习,尽最大努力提升自己,尽早实现自己的目标.所以我在经常利用工作以外 ...
- python按照模板复制sheet页,python实现跨excel的工作表sheet之间的复制方法
如何将某个Excel文件中的特定sheet复制到一个另一如何将某个Excel文件中的特定sheet复制到一个另一个Excel文件中去?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想 ...
最新文章
- C++_volatile限定修饰符 Pair类型
- MPB:农科院牧医所赵圣国组-微生物超高分子量DNA提取方法
- python使用fpdf2包和pdfrw报包新内容添加到已有的PDF页面上
- innodb主键的长度为什么不能大于767字节
- 恢复linux里被误删除的文件
- 机器学习笔记:误差的来源(bias variance)
- for-each 循环原理
- IoTSharp部署教程-Sqlite分表篇
- MTK通用驱动的安装
- 快速排序C语言递归代码实现
- java库存_java实现超市库存管理系统
- nginx处理redirect location端口丢失的问题
- 台式计算机无法连接网络,台式电脑无法连接无线网络怎么办
- 第三方服务(文件,图片存储)
- adb性能测试_FPS(流畅度)
- 用Python批量裁剪图片
- 思科网络学院-网络互联-第五章
- IntelliJ IDEA 缓存和索引介绍和清理方法
- 一个日本小老板某个工作日的时间纪实
- linux服务器80端口无法访问,Telnet linux服务器80端口时通时不通