有谁知道如何计算两条给定曲线的中轴?如何计算中轴?
中轴:http://en.wikipedia.org/wiki/Medial_axis
这里是我需要计算它的形状:
我在中轴自己,暗黑色的线画了,但我需要能够计算它动态地。
下面是我迄今所做的小程序和代码: http://www.prism.gatech.edu/~jstrauss6/3451/sample/
已知的变量是: -pt A,B,C,d 的红,绿-radii,黑色圆 -pt Q和R(就在图片的外面),黑色圆圈。
有谁知道如何计算两条给定曲线的中轴?如何计算中轴?
中轴:http://en.wikipedia.org/wiki/Medial_axis
这里是我需要计算它的形状:
我在中轴自己,暗黑色的线画了,但我需要能够计算它动态地。
下面是我迄今所做的小程序和代码: http://www.prism.gatech.edu/~jstrauss6/3451/sample/
已知的变量是: -pt A,B,C,d 的红,绿-radii,黑色圆 -pt Q和R(就在图片的外面),黑色圆圈。
让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
中)。
如果将圆圈嵌入矩形网格(思考图像),则可以使用此图像的距离变换来计算您的中轴。看到这个link。 存在几个O(nlogn)算法来计算图像网格上的距离图。
中轴在这种情况下是hyberbola。
欲了解更多信息,请参阅this article,尤其是下面的摘录:
任何圈的中心外切两个给定界位于双曲线,其焦点是给定圆的中心,并且其中顶点距离2a等于两个圆的半径之差。
因此,考虑到焦点和顶点距离,问题可以归结为绘制双曲线。