2011-12-09 42 views
1

好的,这里是故事:几个星期前我在其中一个比萨盒子中发现了这个问题。它说,如果你能在完成比萨之前解决这个问题,你会被tripadviser聘用。虽然我不打算雇用,但这个问题让我感到很沮丧,并且把我的注意力集中在披萨和晚餐上。我制定了一些东西,但有一些假设。这里是问题:查找连接两个矩形中心的线段的长度的算法

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

编辑

寻找一个纲领性或psudo码explanation-无需移动到maxthexchange。

有什么建议吗?

+0

认为这个应该继续[数学交流](http://math.stackexchange。com /) – Claudiu

+0

寻找一个编程而不是像数学一样的解释。 –

回答

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 = R.y得到D.

您还可以使用的t*您解决在C和d,确定像重叠的矩形病理情况下得到的值。

+0

+1我同意这比我所建议的更简单和直接。我会保留我的答案,因为它是有效的,但这显然是一条路。 –

1

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

我假设你已经知道矩形的坐标。计算中心点的坐标和边缘的长度是微不足道的。

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

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

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

您还可以计算的角度(称之为n)是AB使得与CC'A和B的坐标,因为你知道CC'是垂直的。

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