对CAD圆弧直线不了解的朋友可以先阅读以下博文:
https://blog.csdn.net/iloveas2014/article/details/103837857
https://blog.csdn.net/iloveas2014/article/details/103848611
现在我们在上篇的基础上把一般位置的积分极限给算出来。
这里面,R,cy和sα,eα都跟特殊位置有所不同。
现在我们先把前面用过的一般位置的图给搬过来。
然后R前面有算过,结果为
这个结果看着比较长,然后那串根号的东西只是个常量,并且后面会经常用到,它等于SE连线的长度。既然如此,那我们接下来就用一个字母L来表示吧。
然后我们要求圆心C的坐标。前面我们都基于直角三角形计算圆心半径,此处我们沿用这一方法。
在直角三角形SO'C中,不难看出O'C跟已知条件存在如下关系
然后C的坐标可以通过O'点的坐标加上向量O'C所得。
O'是S和E的中点,不难求出
然后O'C向量的长度前面已经求出,再把方向算出来即可。
由于O'C跟SE垂直,并且从SE旋转到O'C为逆时针(正旋转),所以把SE旋转+90度即可得到。
旋转的算法可以自行查阅资料,也可以参阅我之前写的矩阵教程:
https://blog.csdn.net/iloveas2014/article/details/79521717
假设向量SE是(x,y),那么按照上文的旋转矩阵,OC的方向将和下面的向量一致。
(xcos90°-ysin90°, ycos90°+xsin90°)=(-y, x)
类似地,旋转-90度将得到向量(y, -x)
向量旋转90度在我们的项目里非常常见,当然了,这也是轨迹运动类的游戏面非常重要的基础算法。所以这里我标下重点,作为本文附带的干货送给大家。
向量(x,y)绕坐标原点旋转+90度的结果为(-y, x),旋转-90度的结果为(y, -x)。
回到正题,把这一结论代入到SE向量中,得到一个跟O'C方向一致的向量M:
M的长度等于SE的长度,然后我们知道
因此O'C跟M的长度之比等于
然后我们给M乘上这个比值,就可以得到最终的O'C向量了。
接着我们就可以算C点的坐标了。
然后我们要的cy在里面了。
真的比特殊位置复杂好多啊。
然后就是sα和eα了,当圆弧趋于直线的时候,它们都趋于CO'跟x轴正半轴的夹角。
然后通过上篇的计算我们发现,我们关注的更多是sα和eα的和或者差
其中,和是等于CO'跟x轴正半轴的夹角的两倍,而差仍为0。
向量CO'跟前面算的向量O'C方向相反,因此其值等于
所以,向量CO'跟x轴正半轴的夹角等于
这个看着复杂,实际上是个常量,我们用一个字母表示就成了,另
则有
且当弧线趋于直线时,有
然后,我们把上篇的积分极限搬过来吧!
跟上篇一样,我们分开3部分计算。
第一部分:
从演算过程不难看出其实一般位置跟特殊位置没有太大区别,仅仅是sα+eα从-π变成了2A,并且这只是个常量替换,所以后面两部分,我只给结果不给过程了。然后后面的p我们应该替换为L/2。
第二部分:
第三部分:
接着3部分合起来,得到
这个似乎复杂了,不过我们继续化下去。
化到这里,中括号3个项的后两项都是常数,我们重点看看第二项能否用跟第三项相类似的变量来表示从而更好地合并起来。
如上图,∠ACO'对应的就是上式中A的相反数,然后因为AC∥SC',所以=∠O'CS=-A。
然后因为∠SO'C'=90°,所以∠O'SC'=90°-∠O'CS=90°+A。
然后上式中的ex-sx就可以这样化简了。
重新代入上式,得到
很好,常数项刚好抵消为0了,这下式子简洁了很多。
我们继续化简看看。
前面我们算过
所以此处我们反过来代入下,得到
这个式子它代表的是什么呢?请看下图。
根据定积分的定义,直线SE从S到E的积分等于蓝色梯形的面积。
艾玛,这不正跟我们刚才算出来的极限值一模一样嘛。
然而之前我们给出的图中,sy是小于0的,这个时候构成的不是梯形,而是长下图这个样子。
此时的积分结果应该等于蓝色三角形的面积-绿色三角形的面积。我们看看这种情况下上式是否仍然成立。
此处先说明一下,因为sy为负数,所以AS或者说SA的长度等于-sy而非sy。推导过程中需要注意这里的符号。
现在我们把前面的凑好了,式子是否成立,看
是否等于0就知道了。
图中,蓝色三角形和绿色三角形为相似三角形。因此有
可见这个多出来的式子真的等于0,所以
对于y坐标为负数的情况仍然成立!
至此,一般位置下圆弧直线的定积分在趋于直线时的极限已经被证明出来是正确的,不知道大家看晕了没有,毕竟饶了很多的圈子,我感觉有的朋友大概都不知道我后面的推导是在干啥了。
不管如何,这里我也总结一下,圆弧直线的定积分在趋于直线时的极限可求,但是也用到了夹逼定理,因此在非数学编程语言上需要通过if进行区分。
下一篇我会讲一个相对简单,个人觉得也蛮有意思的一个东西给大家缓一缓,本篇就到这儿,白白!