2

我可以用算法画一个圆。但是,边界看起来很奇怪,像素看起来彼此分离。我希望他们更接近。我试图扩大点大小。但结果并没有那么好。所以,我在想如果我可以完全填充像素可能会更好。(我想它是方形的。)我该怎么做或者你有更好的主意吗?现在看起来像这样:

http://img690.imageshack.us/i/circlev.jpg/

4

3 回答 3

5

没有代码,很难诊断问题。对于该算法,像素的实际布局看起来是正确的。不过,您似乎使用的投影矩阵并未将世界空间直接转换为屏幕空间。

尝试使用正交投影,您可以确保世界坐标中的一个偏移量正好相当于屏幕空间中的一个像素。

于 2011-02-28T14:58:49.337 回答
2

从您的 jpeg 来看,我想知道您认为世界空间中的一个像素是否实际上不是。也许您的投影矩阵并没有像您想象的那样做。

GL_POINT_SMOOTH 是否启用?——这可能是在搞砸事情。这些像素看起来很奇怪。

假设使用此算法对您很重要(并且您对可能更有效的方法不感兴趣),您可以为每个“像素”绘制一个四边形,而不是使用 GL_POINTS。

于 2011-02-28T14:28:06.140 回答
0

使用 sin/cos 方法,然后你可以从一个点画线到另一个点,它也允许你改变多边形的细节,更不用说它也更容易填充圆(从中间到边缘绘制三角形)。

如果您使用更高的细节,结果将与 Bresenham 几乎相同。

于 2011-02-28T14:14:40.740 回答