2011-06-14 36 views
2

嗨,我做了一个应用程序,它有两个balls.red和yellow。 用户必须拖动RED BALL并将其放在YELLOW BALL上。它位于X-Y平面中。现在我想计算重叠的精度是多少。我知道,如果目标的X-Y等于前锋的X-Y,那么它是100%,但你将如何计算它?因为如果你移动红球射手的X变大和?我一直在使用误差百分比公式%将是不准确的,但它是不准确的进一步正确的价值如何找到圈的重叠

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

enter image description here

回答

4

我想最直观的百分比计算形式将来自计算重叠的每个圆的面积百分比。

你使用什么样的粒度?你的x-y坐标代表什么,每个圆的中心?如果X-Y坐标的中心,那么你可以使用距离公式:

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

在靶的X-Y COORDS为x1,y1和前锋的X-Y COORDS是X2,Y2。

有了这个d,你可以像电脑这样的百分比:

Percent = (d/radius) 
+0

我收到XY从'MouseMove'事件 – 2011-06-14 21:03:59

+0

@Lagrangian鼠标指针坐标你不是应该用圆圈的中心呢?人们可以将边缘保持在边缘并将其完全拖过其他圆圈,但是您的X-Y会将其检测为不太完美的重叠。 – YetAnotherUser 2011-06-14 21:05:48

+0

@Lagrangian我同意YetAnotherUser。如果你知道每个圆的中心,这个问题就会变得相对简单。 – uscere90 2011-06-14 21:09:44

0

你需要一些数学来计算确切的结果,但这里是一种吃法,会给你很好的近似。 ((x1-x2)^ 2 +(y1-y2)^ 2) 您的结果大致是(距离/半径* 2)^ 1.8 请尝试以下公式并查看精度是否足够

+0

为什么功率为1.8? – 2011-06-14 21:12:02

+0

因为它必须小于2且大于1.5。我不想计算确切的公式,所以1.8似乎是一个很好的经验法则。尝试一下。您可以随时将其更改为1.9,1.7 e.t – DanielHsH 2011-06-14 21:37:34