【问题标题】:2 Line segments having same end point2 具有相同端点的线段
【发布时间】:2013-01-06 09:34:41
【问题描述】:

我有一个关于 2 条线段的问题。假设我们有 2 个线段,其原点和长度分别为:(P0, L0) 和 (P1, L1)。我需要找到它们何时可以在同一点结束。线段位于 3D 空间中的任意位置。

我能想到的一种方法是:假设这个公共端点是T,点是A和B。那么对于以A和B为原点的线段,A,B和T必须形成一个三角形.向量 AT 的长度 = L0,向量 BT 的长度 = L1。但是由于线段的方向是未知的,所以可能有很多可能性。假设我们为线段 AT 选择一个特定方向作为 (i,j,k) - 1st octant。所以现在我们可以从 T 在空间的任何地方移动,但只能移动距离 L1 才能找到 BT。

这是我不确定如何前进的地方。

【问题讨论】:

    标签: math


    【解决方案1】:

    当且仅当P0 和P1 之间的距离小于或等于L0 + L1 时,线段才能在同一点结束。在此距离等于L0 + L1 的特殊情况下,线段在空间中具有相同的方向并位于同一条线上。

    考虑这个问题的一种方法是询问P0 和P1 周围的两个球体是否相交或至少相互接触。交点(触摸)的圆(点)是您的线段可以有相同端点的地方。

    【讨论】:

    • 发誓!我没有考虑球体交叉点的解释。你提到的特殊情况。你确定他们有相同的方向吗?这可能是解决方案之一。当三个点形成一个三角形时,d = L0 + L1 不也是这样吗?还有一件事。一旦我们对此进行测试,如果我想运行值的迭代来测试,什么范围的值是可以接受的。
    • 我确信它们形成了一条线。有关详细说明,请查看“三角不等式”。在d == L0 + L1 的情况下,您的三角形将折叠为平线。无需测试。经过验证的数学。
    • 哦,是的,明白了。值范围呢?我是否需要单独输入值,因为我希望函数返回所有有效公共端点的列表
    • 啊哈,这更难。虽然在一个圆圈中有无限多的点。您想要参数表示吗?
    • 是的,我认为参数表示可能是表示所有点的唯一方法。我还能怎么做?也许我可能需要一个额外的约束,比如点应该在特定区域内
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多