Store Bresenham生成的圆形为多边形?

时间:2012-06-14 07:31:32

标签: algorithm graphics bresenham

我正在使用Midpoint circle algorithm生成圈子。我不想画这些圈子。相反,我想将它们存储为多边形。显然,坐标的顺序错误,所以如果我用这样的方法绘制这些圆圈的话。 Graphics.DrawPolygon圆圈将成为线条网格。

问:如何修改算法以生成正确定义的多边形?或者,如何从一组点(在这种情况下属于圆圈)中创建有效多边形?

更新:这就是诀窍。

var firstHalf = points.Where(p => p.Y >= cy).OrderBy(p => p.X);
var secondHalf = points.Where(p => p.Y < cy).OrderByDescending(p => p.X);

var polygon = new List<Point>();
polygon.AddRange(firstHalf);
polygon.AddRange(secondHalf);

1 个答案:

答案 0 :(得分:2)

对于圆圈,应该足以对两个半部分进行排序,例如:在x上方排序y_mid升序和y_mid降序。这些点应该是你的多边形。