Geometry 如何计算中轴?

Geometry 如何计算中轴?,geometry,computational-geometry,medial-axis,Geometry,Computational Geometry,Medial Axis,有人知道如何计算两条给定曲线的中轴吗 中轴: 这是我需要计算的形状: 我自己画了中轴,黑色的线,但是我需要能够动态地计算它 以下是小程序和我迄今为止所做工作的代码: 已知变量为: -pt A、B、C、D -红色、绿色和黑色圆圈的半径 -pt Q和R(就在图片外面),黑色圆圈。如果将圆圈嵌入到矩形网格上(想想图像),则可以使用该图像的距离变换来计算中轴。看这个。 有几种O(nlogn)算法用于计算图像网格上的距离贴图。让C1和C2成为半径为r1和r2的圆心。由两个圆构成的图形的中轴(减去两个中

有人知道如何计算两条给定曲线的中轴吗

中轴:

这是我需要计算的形状:

我自己画了中轴,黑色的线,但是我需要能够动态地计算它

以下是小程序和我迄今为止所做工作的代码:

已知变量为: -pt A、B、C、D -红色、绿色和黑色圆圈的半径
-pt Q和R(就在图片外面),黑色圆圈。

如果将圆圈嵌入到矩形网格上(想想图像),则可以使用该图像的距离变换来计算中轴。看这个。
有几种O(nlogn)算法用于计算图像网格上的距离贴图。

C1
C2
成为半径为
r1
r2
的圆心。由两个圆构成的图形的中轴(减去两个中心点)是点集
M

|M - C1| - r1 = |M - C2| - r2
这意味着

|M - C1| - |M - C2| = r1 - r2
|M - C1|^2 + |M - C2|^2 - (r1 - r2)^2 = 2 * |M - C1||M - C2|
(|M - C1|^2 + |M - C2|^2 - (r1 - r2)^2)^2 = 4 * |M - C1|^2 |M - C2|^2  (**)
所以中轴是一条四次代数曲线

假设
C1
C2
位于y轴上,假设点(0,0)位于中轴上(因此
C1=(0,-r1-x)
C2=(0,r2+x)
对于一些
x
可以从数据计算)。这是你永远可以转化成的东西


现在,您需要将中轴参数化的曲线
y=f(x)
。为此,选择所选的
x
,并使用牛顿法求解
y
中的方程
(**)
,初始猜测
y=0
。这是一个可以精确计算的多项式,以及它的导数(在
y
中)。

在这种情况下,中轴是一个hyberbola

有关更多信息,请参阅,特别是以下摘录:

与两个给定圆外部相切的任何圆的中心位于双曲线上,双曲线的焦点是给定圆的中心,其中顶点距离2a等于两个圆的半径差

所以问题归结为画一条双曲线,给定它的焦点和顶点距离