我需要在给定的圆(或曲线)上找到一个或多个最小化d0 + d1的点?曲线的半径和中心分别是(0,0)和'r',点A和B的坐标是已知的。假设A =(x1,y1),B =(x1,-y1),r> sqrt(x1^2 + y1^2)。 C是应尽量减少长度D0 + D1 D0的圆的未知点 - 至C上的圆找到最小距离
点C沿圆移动圆 D1-到C B之间的距离A之间的距离。我需要在给定的圆(或曲线)上找到一个或多个最小化d0 + d1的点?
我需要在给定的圆(或曲线)上找到一个或多个最小化d0 + d1的点?曲线的半径和中心分别是(0,0)和'r',点A和B的坐标是已知的。假设A =(x1,y1),B =(x1,-y1),r> sqrt(x1^2 + y1^2)。 C是应尽量减少长度D0 + D1 D0的圆的未知点 - 至C上的圆找到最小距离
点C沿圆移动圆 D1-到C B之间的距离A之间的距离。我需要在给定的圆(或曲线)上找到一个或多个最小化d0 + d1的点?
一般情况下是非常复杂的第一种情况,但特殊情况
A=(x1,y1)
和B=(x1,-y1)
和r > sqrt(x1^2+y1^2)
与圆,圆心起源具有足够的对称性,至少在某些情况下可以获得解决方案。我假设A ≠ B
(等同于y1 ≠ 0
),否则这个问题对于一个圆圈来说是微不足道的。
让dist(P,Q)
为点P
和Q
之间的欧几里得距离。的(闭合)线段连接A
和B
是点P
与
dist(P,A) + dist(P,B) = dist(A,B)
轨迹对于D > dist(A,B)
,点与
f(P) = dist(P,A) + dist(P,B) = D
轨迹为椭圆形E(D)
其焦点是A
和B
。让P
成为圆上的一个点,并且D = f(P)
。
P
的切线与圆和椭圆E(D)
不重合,P
既不是局部最小值,也不是一个局部最大值的f
限制于圆形。P
中的E(D)
的曲率,那么P
是局限于圆的局部最大值f
。P
中的E(D)
的曲率,那么P
是局限于圆的局部最小值f
。E(D)
在P
曲率,然后
P
是f
分离的局部最小值限制为圆如果dist(P,A) = dist(P,B)
,P
既不是本地最大值或局部最小值f
,否则限制在该圈内。首先,如果x1 = 0
,很容易看到(如果它不是几何上明显),该圆上的最小化f
的点是与x坐标0
,即P1 = (0,r)
和P2 = (0,-r)
的点。 [如果r² ≤ x1² + y1²
,那甚至是对的。]
现在,假设x1 ≠ 0
,不失一般性x1 > 0
。那么很明显,最小化为f
的圆上的点P = (x,y)
必须具有x > x1
。根据情况的对称性,点R = (r,0)
必须是局部最小值或局限于圆的局部最大值f
。
计算f
附近R
的行为,你会发现R
是局部最小当且仅当
r ≥ (x1² + y1²)/x1
由于R
是E(f(R))
最小曲率(和R
到E(f(R))
切线和点圆一致),那么R
也是全球最小值。
如果是r < (x1² + y1²)/x1
,那么R
是局限于圆的局部最大值f
。然后f
在圆上有两个全局最小值,具有相同的x坐标。不幸的是,我没有一个很好的公式来计算它们,所以我不能提供比迭代搜索更好的方法。
嗨丹尼尔。感谢您的好解释。问题是如何开始迭代搜索并将其作为算法。 – Norman 2013-02-14 00:59:15
如果直线AB与圆相交,那么C就是该交点(注意可以有两个交点并且两者的距离相等,都为d0+d1
!)。
如果AB不相交的圆,则C是在圆相交从上线AB最接近圆中心的点的假想线的点。
有很多文章在网上如何找到另一点最接近的一条线的点,以及如何找到两条线之间的交叉点,这将解决第二种情况。因为你可以google“行圈交汇”
第二部分一般不是这样。如果连接“A”和“B”的线段完全位于圆外,距离线段最近的点将使距离之和最小化,当且仅当圆心与“A”距离“ B'。但是,在这个问题上,情况就是这样。但是线段完全位于圆内,这使得情况更加复杂。 – 2013-02-13 21:06:53
你能添加图片吗?你需要定义你的距离函数! – 2013-02-13 11:03:24