2010-06-08 74 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