如何找到圆的重叠

时间:2011-06-14 20:58:23

标签: c# winforms math graphics opentk

你好,我做了一个有两个球的应用程序。红色和黄色。 用户必须拖动RED BALL并将其放在YELLOW BALL上。它位于X-Y Plane.now我想计算重叠的准确度。我知道如果目标的X-Y等于前锋的X-Y那么它是100%,但你将如何计算呢?如果你进一步移动红球正确的前锋X的值变大,百分比将不准确?我一直在使用百分比误差公式,但它不准确

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

enter image description here

4 个答案:

答案 0 :(得分:4)

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

您使用的是哪种粒度?你的x-y坐标代表什么,每个圆圈的中心?如果x-y坐标是中心,则可以使用距离公式:

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

目标的x-y坐标是x1,y1和撞针的x-y坐标是x2,y2。

有了这个d,你可以像这样计算一个百分比:

Percent = (d / radius)

答案 1 :(得分:2)

答案 2 :(得分:0)

有很多类型的碰撞。圆圈碰撞的好文章: http://compsci.ca/v3/viewtopic.php?t=14897

答案 3 :(得分:0)

你需要一些数学来计算确切的结果,但这里有一种吃饭方式可以给你很好的近似值。 用sqrt((x1-x2)^ 2 +(y1-y2)^ 2)计算球之间的距离 您的结果大约是(距离/半径* 2)^ 1.8 尝试这样的公式,看看精度是否足够