圆的圆度值显示无穷大错误

时间:2018-01-09 08:05:41

标签: c# .net math aforge

我有一个计算圆的圆度的函数。如果结果是1.00,圆圈是完美的圆形,任何低于1.00的圆圈都表示圆形不完美。除了一个小问题之外,它运行良好,有时它将值显示为无穷大,我无法找到原因。我正在使用浮点计算它,尝试加倍,但同样的事情发生了。

以下是代码:

 for (int i = 0, n = blobs.Length; i < n; i++)
 {
     List<IntPoint> edgePoints = bc.GetBlobsEdgePoints(blobs[i]);

     List<IntPoint> hull = hullFinder.FindHull(edgePoints);
     double perimeter = 0.0;
     for (int j = 0; j < hull.Count - 1; j++)
     {
         perimeter += hull[j].DistanceTo(hull[j + 1]);
     }
     perimeter += hull[hull.Count - 1].DistanceTo(hull[0]);

     float circularity = (float)((4 * Math.PI * blob.Area) / (Math.Pow(perimeter, 2)));
     double circround = Math.Round(circularity, 3);
     lblcircle.Text = circround.ToString();
}

在逐步执行代码时,我们首先看到Perimeter为0,但显示了圆度: enter image description here

然后,当我进入第三个调试行时,周长变为0,结果为无穷大: enter image description here

0 个答案:

没有答案