好的,这是故事:几周前我在其中一个披萨盒中发现了这个问题。它说如果你能在完成披萨之前解决这个问题,那么你就可以在tripadviser上受雇。虽然我不打算被雇用,但这个问题让我眼前一亮,并且把我的注意力集中在披萨和晚餐上。我做了一些事情,但有一些假设。这是一个问题:
假设我们知道P,Q R和S.每条矩形都有连接中心的线。我们需要找出C点和D点。我不确定是否还有其他变量可以解决这个问题。
修改
寻找程序性或psudo代码解释 - 无需转移到maxthexchange。
有什么建议吗?
答案 0 :(得分:4)
逐步进行非常简单:
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 :(得分:1)
您实际上无需找到点C
和D
来查找距离。
我假设您已经知道矩形的坐标。计算中心点的坐标和边缘的长度是微不足道的。
现在,想象一条穿过A
的垂直线和一条穿过B
的水平线。它们在某一点交叉,称之为X
。另外,想象一条垂直线穿过C并调用其与矩形RS
- C'
的上边缘的交点。
您可以轻松计算AX
的长度。但AX
的长度是RS
的高度的一半+ PQ
的高度的一半(两者都知道)+ CC'
的长度。
现在您知道CC'
的长度(称之为x
)。
您还可以从n
和B坐标计算AB
CC'
对A
所做的角度(称之为CC'
),因为您知道x * cos(n)
是{{1}}垂直。
因此,段CD的长度为{{1}}。