首先让我说我对数学不是很好。我有一个带有多个文本“盒子”的画布,旋转到300°,这基本上使它们成为平行四边形。他们非常相似:
我正在尝试检测鼠标是否超过其中一个,但我不知道该怎么做。请帮忙。谢谢!
答案 0 :(得分:2)
最简单的方法是在鼠标点上使用逆变换,然后对变换点进行简单的矩形测试。只要您正在使用的仿射变换不会将所有内容映射到一条线,它就会有明确定义的反转。
答案 1 :(得分:1)
每个平行四边形可以首先包含在如上所示的矩形边界框中。如果鼠标不在那个矩形内,那么它肯定不是命中。你已经有很多简单的测试了。其余的空间可以分解成绿色的感兴趣的平行四边形,以及你不想要的区域。所以我们只需要通过以下测试来测试鼠标是否在红色区域:
左:x< a - (a / h)* y
右:x> (a + b) - (a / h)* y
如果其中任何一个条件为真,则鼠标位于平行四边形之外。
有关a值的更多信息,我们可以转向trig。
如果我们知道角度theta和h,那么
a = h tan(Ɵ)