2010-06-08 5 views
2

Pour mon application, je dois diviser en diagonale l'écran de mon iPhone en 4 parties et détecter lequel de la partie a été touché. Je suis très confus parce que mes zones sont des triangles et non des carrés et je ne peux pas trouver une solution pour détecter lequel du triangle a été touché ...Comment détecter le toucher dans la zone triangle

Je reçois le point touché avec la méthode touchesBegan, et là je suis coincé ... :(Comment définir des formes de triangle et tester si elle a été touchée? avec vue? couche?

il pourrait être vraiment cool si quelqu'un pouvait me aider.

Répondre

1

Ce site web montre quelques algorithmes pour vérifier si un point est dans un triangle ou non.

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

En fonction de la rapidité de votre application devrait fonctionner, vous pouvez précalculer et stocker une matrice tous les possibles coordonnées x et y. Cette matrice ressemblerait à quelque chose comme ceci:

point_inside [X] [Y] [triangle]

où X et Y sont les coordonnées de votre écran et « triangle » est pointeur vers quel triangle doit être en ce moment-là .

+0

Il est fondamentalement inconcevable que le coût en mémoire d'une table de recherche soit justifié par une accélération marginale qui pourrait être obtenue par rapport à la méthode de 6502, au moins dans le cas de quelque chose comme les événements tactiles de l'iPhone. – walkytalky

3

Compte tenu de la largeur, la hauteur du rectangle et x, y d'un point dans le rectangle, vous pouvez le faire ...

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

Le code sera un nombre de 0 à 3 représentant la partie sélectionnée.

+0

Nice. Très propre. –

Questions connexes