2010-06-08 71 views
2

对于我的应用程序,我需要对角地划分我的iphone的屏幕4部分,并检测哪个部分被触摸。 我很困惑,因为我的地区是三角形,而不是正方形,我找不到解决方案来检测哪个三角形被触摸...如何在三角形区域检测触摸

我使用方法touchesBegan得到了触摸点,在那里我卡住了... :(如何,如果它被感动了?有景?层定义三角形的形状和测试?

这可能是真的很酷,如果有人可以帮助我。

回答

1

本网站显示一些算法来检查点是否在三角形内。

http://www.blackpawn.com/texts/pointinpoly/default.html

根据您的应用程序应该如何跑得快,你可能要预先计算和存储矩阵将所有可能的x和y坐标。这个矩阵将是这个样子:

point_inside [X] [Y] [三角形]

其中X和Y是在你的屏幕坐标和“三角形”的指针,该三角形应该在这一点上。

+0

基本上不可思议的是,查找表的内存成本可以通过6502方法可能实现的任何边际加速来证明,至少在类似iPhone touch事件的情况下。 – walkytalky 2010-06-08 22:09:32

3

给定的宽度,矩形的高度和在矩形中的一个点的x,y你可以这样做...

int s = y * width/height; 
int code = (x > s) + 2*(x > width - s); 

代码将是一个从0到3的数字,表示选择了哪个部分。

+0

不错。很干净。 – 2010-06-08 21:53:42