好的,故事是这样的:几周前我在一个披萨盒中发现了这个问题。它说如果你能在完成披萨之前解决这个问题,你就会被tripadviser聘用。虽然我不打算被录用,但这个问题引起了我的注意,破坏了我对披萨和晚餐的关注。我想出了一些东西,但有一些假设。这是问题:
假设我们知道 P、QR 和 S。有一条线连接每个矩形的中心。我们需要找出点 C 和 D。我不确定是否还有其他一些我们应该知道的变量来解决这个问题。
编辑
寻找程序化或伪代码解释 - 无需转到 maxthexchange。
有什么建议么 ?
一步一步做很简单:
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 时获得的值来确定像重叠矩形这样的病理情况。
您实际上不需要找到点C
并D
找到距离。
我假设您已经知道矩形的坐标。计算中心点的坐标和边缘的长度很简单。
现在,想象一条垂直线穿过A
,一条水平线穿过B
。它们相交于一点,称之为X
。另外,想象一条穿过 C 的垂直线,并将其与矩形的上边缘的交点称为RS
- C'
。
您可以简单地计算 的长度AX
。但是 的长度AX
是 的高度的RS
一半 + 的高度的一半PQ
(你都知道)+ 的长度CC'
。
CC'
所以现在你知道(调用它x
)的长度了。
您还可以计算与from和 B 的坐标形成的角度(称为它n
),因为您知道它是垂直的。AB
CC'
A
CC'
因此,段 CD 的长度为x * cos(n)
。