有谁知道如何计算两条给定曲线的中轴?
中轴:http://en.wikipedia.org/wiki/Medial_axis
这是我需要计算的形状:
我自己画了一条暗轴,黑暗的黑线,但我需要能够动态计算它。
这是我到目前为止所做的applet和代码: http://www.prism.gatech.edu/~jstrauss6/3451/sample/
已知变量是: -pt A,B,C,D -radii红色,绿色和黑色圆圈 -pt Q和R(在图片外面),黑色圆圈。
答案 0 :(得分:2)
让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)
和{{1对于某些C2 = (0, r2 + x)
,您可以根据数据进行计算)。这是你可以随时转变的东西。
现在,您需要曲线x
来对中轴进行参数化。为此,选择您选择的y = f(x)
,并使用牛顿方法在x
中求解方程(**)
,并进行初始猜测y
。这是一个你可以精确计算的多项式,以及它的导数(在y = 0
中)。
答案 1 :(得分:1)
在这种情况下,中轴是hyberbola。
有关详细信息,请参阅this article,特别是以下摘录:
外部与两个给定圆相切的任何圆的中心位于双曲线上,双曲线的焦点是给定圆的中心,顶点距离2a等于两个圆的半径差。
因此,考虑到焦点和顶点距离,问题会缩小到绘制双曲线。
答案 2 :(得分:0)
如果您将圆圈嵌入矩形网格(想象图像),则可以使用此图像的距离变换来计算您的中轴。见link。 存在几种用于计算图像网格上的距离图的O(nlogn)算法。