如何在三角形区域检测触摸
问题描述:
对于我的应用程序,我需要对角地划分我的iphone的屏幕4部分,并检测哪个部分被触摸。 我很困惑,因为我的地区是三角形,而不是正方形,我找不到解决方案来检测哪个三角形被触摸...如何在三角形区域检测触摸
我使用方法touchesBegan得到了触摸点,在那里我卡住了... :(如何,如果它被感动了?有景?层定义三角形的形状和测试?
这可能是真的很酷,如果有人可以帮助我。
答
本网站显示一些算法来检查点是否在三角形内。
http://www.blackpawn.com/texts/pointinpoly/default.html
根据您的应用程序应该如何跑得快,你可能要预先计算和存储矩阵将所有可能的x和y坐标。这个矩阵将是这个样子:
point_inside [X] [Y] [三角形]
其中X和Y是在你的屏幕坐标和“三角形”的指针,该三角形应该在这一点上。
答
给定的宽度,矩形的高度和在矩形中的一个点的x,y你可以这样做...
int s = y * width/height;
int code = (x > s) + 2*(x > width - s);
代码将是一个从0到3的数字,表示选择了哪个部分。
+0
不错。很干净。 – 2010-06-08 21:53:42
基本上不可思议的是,查找表的内存成本可以通过6502方法可能实现的任何边际加速来证明,至少在类似iPhone touch事件的情况下。 – walkytalky 2010-06-08 22:09:32