Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 将Bresenham生成的圆存储为多边形?_Algorithm_Graphics_Bresenham - Fatal编程技术网

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

Algorithm 将Bresenham生成的圆存储为多边形?,algorithm,graphics,bresenham,Algorithm,Graphics,Bresenham,我正在使用。我不想画这些圆圈。相反,我希望将它们存储为多边形。很明显,坐标的顺序是错误的,所以如果我画这些圆,例如,这个圆会变成一个线的网格 Q:如何修改算法以生成正确定义的多边形?或者,如何从一组点(在本例中属于圆)创建有效的多边形 更新:这就成功了 var firstHalf = points.Where(p => p.Y >= cy).OrderBy(p => p.X); var secondHalf = points.Where(p => p.Y < cy)

我正在使用。我不想画这些圆圈。相反,我希望将它们存储为多边形。很明显,坐标的顺序是错误的,所以如果我画这些圆,例如,这个圆会变成一个线的网格

Q:如何修改算法以生成正确定义的多边形?或者,如何从一组点(在本例中属于圆)创建有效的多边形

更新:这就成功了

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);
var firstHalf=points.Where(p=>p.Y>=cy).OrderBy(p=>p.X);
var secondHalf=点,其中(p=>p.Yp.X);
var polygon=新列表();
polygon.AddRange(上半部分);
多边形。添加范围(第二部分);

对于圆,它应该足以对两个半部分进行排序,例如,在y_中间上方的x中进行升序排序,在y_中间下方进行降序排序。把这些点放在一起应该是你的多边形。

那当然行,但我需要这些圆的100%像素精度。因此,中点算法是一种可行的方法。我相信光栅化算法确实可以改变,以便立即完成排序。然而,这个解决方案已经足够好了。谢谢:)