[转]已知圆弧的起点端点和凸度计算圆心

本文是为了cad.net 数学基础的防丢链接
转载自 https://blog.csdn.net/jiangyb999/article/details/89366912

最近翻看我以前的博文,看到计算LWPLINE中凸度圆弧的圆心的公式那篇,一时竟想不起这公式是如何推导的了。(http://blog.sina.com.cn/s/blog_66349acf0102vivw.html)
这里把推导过程简单描述一下,为了以后不再忘记。
注:本来想发在新浪博客上,奈何人家在维护,要5月才能恢复,已经写好的文,怕丢失,就发到了这里。

首先要明确lwpline中圆弧的定义,在Autodesk的文档中能见到两种叙述:
1,凸度是圆弧圆心角的四分之一的正切
2,凸度等于圆弧的弓高和圆弧的前进距离的比,即凸度=2H/L,H为弓高,L为前进的长度,也即弦长。

这2种叙述表达的含义是一致的,只是第一种方便计算,第二种更直观。


从图上可知,此段圆弧的凸度 bulge=2H/L=tan(β)=tan(α/2)
这里α=2β,应该可以证明的。
(补充一下这个证明,见下图,从图上可看出,90 = α/2 + γ = β + γ,即 β = α/2)


可以想象,以AB的中点C为圆心,以红线段的长度为半径(记为r),以CB为起始位置逆时针旋转90度就能得到O点。

记AB的倾角为θ,则

那么O点的坐标为:

我们知道 α=2β, 所以:

把C点坐标( (x1+x2)/2, (y1+y2)/2), r,以及sin(θ), cos(θ) 带入公式(1),得到O点的坐标为:

化简后得:

以上公式是以逆时针劣弧推导的结果,那么对于逆时针优弧以及顺时针优劣弧是否也适用呢?

答案是:适用!不用做任何更改。

秘密就在于参数b具有自动调节功能。

下面简单分析一下。

上面是逆时针优弧,此时的凸度bulge>1,那么b<0,所以 r<0

即:逆时针旋转一个负的向量,相当于顺时针旋转其反向量(正向量)。

从图上可以直观的看到,实际是顺时针旋转到达的圆心位置。

这是一个顺时针的劣弧,凸度bulge < 0, |bulge| < 1, 可以得到 b < 0, r < 0
与上面一样的道理,也是顺时针旋转到达圆心位置。

这是一个顺时针的优弧,bulge<0且 |bulge|>1, 那么 b>0, r>0

对于r>0的情况,仍然是逆时针旋转。

====================================

所以,正是由于bulge可正可负,参数b才天生具有调节旋转方向的功能。

因此,无需讨论bulge是否正负,统统使用一组公式即可计算出圆心。

最后感慨一句:
Autodesk用凸度的正负表示圆弧的方向,真乃神来之笔。!

posted @ 2022-02-04 22:20  惊惊  阅读(1022)  评论(0编辑  收藏  举报