algorithm - 将 Bresenham 生成的圆存储为多边形?

标签 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);

最佳答案

对于圆,将两半排序就足够了,例如在 y_mid 升序上方和 y_mid 降序下方的 x 中排序。这些点应该由您的多边形组成。

关于algorithm - 将 Bresenham 生成的圆存储为多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11028602/

相关文章:

regex - 检查两个模式是否相互匹配?

algorithm - 在无向图中查找所有唯一路径

java - java 如何知道鼠标点击是否在图形图像上

c - Bresenham椭圆绘制算法在OpenGL中的实现

c - 如何使 Bresenham 算法反向工作?

python - 基于ELO的团队匹配算法

c++ - 使用 vector 的 merge_sort 适用于少于 9 个输入

c - 确定多边形是否在视锥体内

javascript - 将顶点法线转换为面法线

algorithm - A* 启发式创建 Bresenham 线