2009-11-04 9 views
0

Je crée une application dans laquelle je vais dessiner deux cercles sur l'écran, un grand cercle avec un petit cercle à l'intérieur. Je veux que l'utilisateur soit capable de toucher/glisser sur l'écran à l'intérieur ou à l'extérieur du grand cercle et il va déplacer le plus petit cercle dans cette direction. Si l'utilisateur touche à l'extérieur du grand cercle, le petit cercle ne sortira pas de la bordure du grand cercle. Avec la recherche que j'ai faite, je peux facilement dessiner les deux cercles l'un à l'intérieur de l'autre et gérer le mouvement de l'image plus petite. Cependant, je ne vois pas un moyen facile de limiter le cercle plus petit pour rester à l'intérieur du cercle plus grand. Tout ce que j'ai trouvé est un écrêtage, mais cela ne ferait que dessiner partiellement le cercle plus petit. Quelqu'un at-il un bon point de référence que je pourrais utiliser pour commencer à regarder comment cela est possible? Merci.Images superposées

Répondre

0

Disons que le grand cercle a Radio Rb et Centre Cb. Le cercle intérieur serait Ri et le centre Ci.
Si vous définissez la distance de Ci à Cb (du centre du cercle intérieur au centre du grand) pour être inférieur à Rb-Ri (que le reste du grand radieux du radieux intérieur), vous aurez toujours le cercle intérieur à l'intérieur .. Avez-vous l'idée? Dessinez-le et voyez que c'est toujours vrai.) Distance (Ci à Cb) < Rb-Ri La seule chose que vous devez faire est de vérifier que cela soit vrai.

Distance de Ci à Cb est Math.sqrt (Math.pow (Cix-Cbx, 2) + Math.pow (Ciy-Cby, 2))

+0

Drew out sur papier et il semble avoir un sens. Je vais devoir jouer ce soir. – Mike

+0

Il peut être plus facile de le faire (certainement d'y penser) en coordonnées polaires. –

+0

vous aurez besoin de convertir les coordonnées cartésiennes (de l'écran) en polaires, le nombre d'opérations incluses juste en ce qui équivaut à calculer la distance entre deux points (les deux centres) – jmayor

1

Je pense que le mieux est de faire les calculs vous-même et de limiter le mouvement des petits cercles. L'utilisation de l'écrêtage n'empêcherait pas le cercle d'aller «à l'extérieur» de la bordure des grands cercles, il ne dessinerait que partiellement le cercle plus petit quand il dépasserait les limites valides.

Vous devez vérifier si le centre du petit cercle est à l'intérieur d'un cercle imaginaire avec le même centre que le cercle plus grand, mais avec un diamater de (diameterLargeCircle - diameterSmallCircle)

+0

que ce que je pensais. J'espérais qu'il y avait un moyen de le faire sans les maths car je suis sûr que le calcul de tous les points sur le grand cercle sera difficile. – Mike

+0

Hey pas besoin de calculer tous les points sur le cercle extérieur .. – jmayor