创建具有指定半径的两条曲线的圆形弧形



标题中提到的操作在许多计算机辅助设计(CAD)软件(例如AutoCAD)中很常见,如AutoCAD,它称为Fillet。但是,我发现在我自己的程序中实现此功能真的很困难。

我想到的方法是使用以下条件:弧线的距离距离曲线的切线线等于指定的半径。考虑到实际曲线是通过零件非线性函数定义的,并且接触点可以在曲线上的任何位置,因此获取解决方案并不容易。有人好主意吗?

鉴于您在足够的细节中没有描述曲线的特征,因此很难带有特定/指定的算法,但让我们尝试一种描述性方法:

取给给定半径的圆并在一条曲线上滚动,直到圆触摸另一个圆。

我假设您可以参数化曲线。

要沿着曲线"滚动圆",您需要切线(或更好地说正常,当然是正常的,与切线是正常的)在"滚动曲线曲线"的点 - 圆形切线。您的正常状态,您知道半径,可以计算圆圈。您有圆圈,您可以查看是否/与另一曲线相交的位置。

"滚动"的想法是在圆圈不相交另一个曲线和另一个点相交的点之间将解决方案(一条曲线上的切点的参数)括起来(一个超过1点以上,)。一旦拥有支架,请在两个位置之间使用一分配方法(二进制搜索),直到您的圆圈变得"足够切线"到另一曲线(即与另一个曲线的相交点是如此近,以至于它们落在您可接受的Epsilon以下)。

您现在将有两个点(每条曲线一个),而实现解决方案的圆圈:只需在此圆上保持弧度与有意义的关系(基于两个切线的收敛或发散)。

要找到弧中心,您需要两种健壮且战略性的算法:

  1. 曲线偏移
  2. 曲线相交

AutoCAD可以找到ARC中心的方法是抵消Arc半径距离的两条曲线并与它们相交。根据曲线偏移方向,您可以轻松地在所有可能的解决方案之间切换到问题。

此时,修剪切线处的曲线将是微不足道的。

最新更新