2011-06-14 2 views
2

Bonjour, j'ai fait une demande qui a deux balls.Red et jaune. L'utilisateur doit faire glisser RED BALL et déposez-le sur le YELLOW BALL .il est dans X-Y Plan.now je veux calculer quelle est la précision est le chevauchement. Je sais que si les X-Y de la cible sont égaux au X-Y du Striker, alors c'est 100% mais comment allez-vous le calculer? comme si vous déplacez la balle rouge plus juste valeur de X de l'attaquant devient de plus en pour cent ne sera pas précis? J'utilise la formule Pourcentage d'erreur, mais il est inexactcomment trouver le chevauchement de cercle

double percentErrorX =(CurrentX-targetX)*100/targetX; 
      double percentErrorY = (CurrentY -targetY)*100/targetY; 

enter image description here

Répondre

4

Je pense la forme la plus intuitive du calcul du pourcentage proviendrait du calcul du pourcentage d'aire de chaque cercle qui se chevauche.

Quelle sorte de granularité utilisez-vous? Et que représente votre coordonnée x-y, le centre de chaque cercle? Si le coordonnées x-y est le centre, vous pouvez utiliser la formule de distance:

d = sqrt[ (x1-x2)^2 + (y1-y2)^2 ] 

Lorsque les x-y coords de la cible sont x1, y1 et les coords x-y de l'attaquant sont x2, y2.

Avec ce d, vous pouvez l'ordinateur un pourcentage comme ceci:

Percent = (d/radius) 
+0

Je reçois les coordonnées XY du pointeur de la souris en cas 'MouseMove' –

+0

@Lagrangian vous ne devriez pas utiliser centre des cercles à la place? On peut "tenir" le cercle au bord et le faire glisser parfaitement sur l'autre cercle, mais votre x-y le détecterait comme un chevauchement pas si parfait. – YetAnotherUser

+0

@Lagrangian Je suis d'accord avec YetAnotherUser. Ce problème devient relativement simple si vous connaissez le centre de chaque cercle. – uscere90

0

Vous avez besoin de quelques maths pour calculer le résultat exact mais voici une façon de manger qui vous donnera une bonne approximation. Calculez la distance entre les boules par sqrt ((x1-x2)^2 + (y1-y2)^2) Votre résultat est d'environ (distance/rayon * 2)^1,8 essayez donc des formules et voir si la précision est assez bon

+0

pourquoi puissance à 1,8? –

+0

Parce qu'il doit être inférieur à 2 et supérieur à 1,5. Je ne voulais pas calculer les formules exactes donc 1.8 semble être une bonne règle. Essayez-le. Vous pouvez toujours le changer à 1.9, 1.7 e.t – DanielHsH

Questions connexes