【问题标题】:Finding the point which minimizes the distance given a point in space and constraints?找到最小化给定空间和约束点的距离的点?
【发布时间】:2012-12-02 22:00:15
【问题描述】:

我有一个关于算法的问题:

我们在二维空间中有一个固定点,我们称它为 S(x,y) 和两个连接的长度(L1 和 L2)。这两个链接在一个称为 E(x,y) 的公共关节处连接。我们在空间中有另一个点,它是 L2 的端点,我们称之为 F(x,y)。

所以我们 L1 有两个端点 S 和 E,而 L2 有 E 和 F。

当我们在空间中得到一个点 P(x,y)。我们如何找到最接近 P 的 F(x,y) 的坐标?我想找到将链接 L1 和 L2 带到那个点的 θ1 和 θ2 的角度?

See this link to get the graphical representation of my problem


查看这张图片http://postimage.org/image/qlekcv1qz/,您将能够看到我现在遇到的真正问题。

所以我将其表述为优化问题。目标函数在哪里:

   * arg min |P-F| 

具有约束 θ1 和 θ2,其中 θ1 ∈ [ O , π] 和 θ2 ∈ [ O , π/2]。

所以我们有,

   * xE = xS + L1  * Cosθ1  and yE = yS + L1 * Sinθ1
   * xF = xE + L2 * Cos (θ1 + θ2 )  and yF = yE + L2 * sin ( θ1 + θ2)

这里我们的长度为 L1 = 105 和 L2 = 113.7,点 S 是原点,即 xS = O 和 yS = O。

你能告诉我如何编写我的函数或任何优化问题,让我得到 θ1 和 θ2 的值,以使 F 点和 P 点之间的距离最小化。

【问题讨论】:

    标签: algorithm coordinates computational-geometry trigonometry mathematical-optimization


    【解决方案1】:

    所以如果我理解正确,您的描述相当于有两个长度为 L1 和 L2 的刚性杆,L1 的一端固定在 S,另一端通过柔性接头连接到 L2(在某个未定义的点 E) ,并且您希望使 L2 的另一端(点 F)尽可能靠近某个点 P。如果是这样的话:

     If |L1-L2| < |P-S| < |L1+L2| then F = P
     If |L1-L2| > |P-S| then F = S + (P-S)*|L1-L2|/|P-S|
     If |P-S| > |L1+L2| then F = S + (P-S)*|L1+L2|/|P-S|
    

    这是你想要的吗?

    查看图片 http://postimage.org/image/l1ktt0qtb/

    如果点P比点S更接近|L1-L2| (假设它们不相等),那么点 F 不能“到达”点 P,即使 E 处的角度弯曲到 180 n 度。那么你能得到的最接近的是半径为|L1-L2|的圆上的某个地方。和中心 S。在这种情况下,最佳 F 由具有方向 (P-S) 和幅度 |L1-L2| 的向量给出,上面是我的案例 2 和下面的图 A。请注意,如果 L1=L2,则永远不会出现这种情况。

    如果点 P 与点 S 的距离大于距离 |L1+L2|,则点 F 无法“到达”点 P,即使 E 处的角度被拉直为 0 度。那么你能得到的最接近的是半径为 |L1+L2| 的圆上的某个地方。和中心 S。在这种情况下,最佳 F 由具有方向 (P-S) 和幅度 |L1+L2| 的向量给出,上面我的案例 3 和下面的图 B。

    如果点P在两个限制圆之间,那么将有两种解(一种如下图3所示,另一种是L1和L2反射在由向量P-S形成的镜像线中。在这种情况下“最佳”F 等于点 P。

    如果您想知道 Theta1 和 Theta 2 的角度,那么这是一个不同的问题(我看到您现在已经添加了)。

    对没有直角的三角形使用余弦规则。

    规则是

     C = acos[(a^2 + b^2 - c^2)/(2ab)]
    

    其中三角形的边长为 a、b 和 c,C 是边 a 和 b 之间的夹角。您正在尝试生成一个边为 l1、l2 和 d=|S-P| 的三角形,只要没有两个长度(总和)比第三个短,这将是可能的。

    通过适当地用 l1、l2 和 d 代替 a、b、anc c,您将能够求解每个内角 A、B 和 C。然后您可以使用这些角 A、B、C加上向量 P-S 和水平线之间的角度(也许称为 D?)来计算你的 theta1 和 theta2。

    【讨论】:

    • 我想你错过了理解我的问题。我刚刚在原始问题中添加了我的问题的图形表示。我希望现在已经足够清楚了。
    • @atir 查看我所做的更改以澄清我的答案
    • 是的,我认为您清楚地回答了我在论坛中提出的问题。但我想我没有清楚地问我遇到的困难。请参阅下面我真正想要解决的问题。 postimage.org/image/qlekcv1qz
    猜你喜欢
    • 2021-10-11
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多