我正在使用 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);
最佳答案
对于圆,将两半排序就足够了,例如在 y_mid 升序上方和 y_mid 降序下方的 x 中排序。这些点应该由您的多边形组成。
关于algorithm - 将 Bresenham 生成的圆存储为多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11028602/