1

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

假设我们知道 P、QR 和 S。有一条线连接每个矩形的中心。我们需要找出点 C 和 D。我不确定是否还有其他一些我们应该知道的变量来解决这个问题。 在此处输入图像描述

编辑

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

有什么建议么 ?

4

2 回答 2

4

一步一步做很简单:

  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 = Ry 做类似的事情来得到 D。

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

于 2011-12-09T18:02:28.297 回答
1

您实际上不需要找到点CD找到距离。

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

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

您可以简单地计算 的长度AX。但是 的长度AX是 的高度的RS一半 + 的高度的一半PQ(你都知道)+ 的长度CC'

CC'所以现在你知道(调用它x)的长度了。

您还可以计算与from和 B 的坐标形成的角度(称为它n),因为您知道它是垂直的。ABCC'ACC'

因此,段 CD 的长度为x * cos(n)

于 2011-12-09T18:02:19.957 回答