【问题标题】:Algorithm to find length of a segment that connects center of two rectangles查找连接两个矩形中心的线段长度的算法
【发布时间】:2012-01-16 23:46:37
【问题描述】:

好的,故事是这样的:几周前我在一个披萨盒中发现了这个问题。它说如果你能在吃完披萨之前解决这个问题,你就会被tripadviser聘用。虽然我不想被录用,但这个问题引起了我的注意,破坏了我对披萨和晚餐的关注。我做了一些事情,但有一些假设。问题来了:

假设我们知道 P,Q R 和 S。有一条线连接每个矩形的中心。我们需要找出点 C 和 D。我不确定是否还有其他一些我们应该知道的变量来解决这个问题。

编辑

寻找程序或伪代码解释 - 无需转到 maxthexchange。

有什么建议吗?

【问题讨论】:

  • 觉得这个应该继续math exchange
  • 寻找程序化而非数学类的解释。

标签: algorithm line center segment


【解决方案1】:

一步一步做很简单:

  1. 计算 A = (P + Q) / 2 和 B = R + S / 2(逐个组件)
  2. A 和 B 之间的线的等式是L(t) = t * A + (1 - t) * (B - A)。只要解决 t* 的线性方程使得 L(t*).y = Q.y 得到 C = L(t*)。用 L(t).y = R.y 做类似的事情得到 D。

您还可以使用在求解 C 和 D 时获得的 t* 的值来确定重叠矩形等病理情况。

【讨论】:

  • +1 我同意这比我建议的要简单和直接得多。我会保留我的答案,因为它是有效的,但这显然是要走的路。
【解决方案2】:

其实你不需要找点CD来求距离。

我假设您已经知道矩形的坐标。计算中心点的坐标和边缘的长度很简单。

现在,想象一条穿过A 的垂直线和一条穿过B 的水平线。它们相交于一点,称之为X。另外,想象一条穿过 C 的垂直线,并将其与矩形顶部边缘的交点称为 RS - C'

您可以轻松计算AX 的长度。但是AX的长度是RS高度的一半+PQ高度的一半(这两个你都知道)+CC'的长度。

所以现在您知道CC' 的长度(称为x)。

您还可以根据A 和B 的坐标计算ABCC' 形成的角度(称为n),因为您知道CC' 是垂直的。

所以,段CD的长度是x * cos(n)

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2011-06-06
    • 1970-01-01
    • 2020-04-28
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多