2014-01-08 39 views
0

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

enter image description here

我想检测是否鼠标在其中的一个,但我不知道该怎么做。请帮忙。谢谢!

回答

1

Decomposition

每个平行四边形可首先被包含在像上文所说明的一个矩形边界框。如果鼠标不在该矩形内,那绝对不是命中。已经有很多简单的测试。其余的空间可以分解为绿色的平行四边形图像和你不想要的区域。所以我们只需要测试,如果鼠标在红色区域具有以下测试:

左:X <一个 - (A/H)* Y

右:X>(A + B) - (a/h)* y

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

  • 注意,在这种情况下,我假设y是0在顶部,随着你向下移动,x是在左零,并随着你向右移动。

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

enter image description here

如果我们知道角度theta和小时,然后

A = H黄褐色(Ɵ)

2

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

+0

1这是一个更精确的答案。 – markE