平行四边形在画布上的数学帮助

时间:2014-01-08 15:28:13

标签: math canvas geometry

首先让我说我对数学不是很好。我有一个带有多个文本“盒子”的画布,旋转到300°,这基本上使它们成为平行四边形。他们非常相似:

enter image description here

我正在尝试检测鼠标是否超过其中一个,但我不知道该怎么做。请帮忙。谢谢!

2 个答案:

答案 0 :(得分:2)

最简单的方法是在鼠标点上使用变换,然后对变换点进行简单的矩形测试。只要您正在使用的仿射变换不会将所有内容映射到一条线,它就会有明确定义的反转。

答案 1 :(得分:1)

Decomposition

每个平行四边形可以首先包含在如上所示的矩形边界框中。如果鼠标不在那个矩形内,那么它肯定不是命中。你已经有很多简单的测试了。其余的空间可以分解成绿色的感兴趣的平行四边形,以及你不想要的区域。所以我们只需要通过以下测试来测试鼠标是否在红色区域:

左:x< a - (a / h)* y

右:x> (a + b) - (a / h)* y

如果其中任何一个条件为真,则鼠标位于平行四边形之外。

  • 注意,在这种情况下,我假设y在顶部为0,随着向下移动而增加,x在左边为零,随着向右移动而增加。

有关a值的更多信息,我们可以转向trig。

enter image description here

如果我们知道角度theta和h,那么

a = h tan(Ɵ)