2011-02-28 3 views
3

アルゴリズムで円を描くことができます。しかし、境界は奇妙に見え、ピクセルは互いに離れて見えます。私は彼らに近づけて欲しい。私はポイントのサイズを大きくしようとしました。しかし結果はそれほど良いことではありません。だから、ピクセルを完全に埋めることができればいいかもしれないと思っていました(四角形の形をしていると思います)。どうすればいいですか? これは次のようになります。 http://img690.imageshack.us/i/circlev.jpg/OpenGLでのBresenhamのアルゴリズムを使った描画円

ありがとうございます。

+0

もっと多くの点を描画してみませんか? – Goz

+1

なぜあなたはBresenhamをOpenGLで再実装しますか? OpenGLはすでにラインプリミティブを提供しています。 – datenwolf

+1

@datenwolf、これは入門コンピュータグラフィックスクラスの古典的な宿題の問題です。 –

答えて

0

sin/cos法を使用すると、ある点から別の点に線を引くことができます。また、ポリゴンの詳細を変更することもできます。エッジ)。

詳細を使用すると、結果はBresenhamとほぼ同じになります。

+1

-1:OPは、クラス要求のためにBresenhamのアルゴリズムを使用する必要があります。だからこれは本当に質問に答えるわけではありません。 – Omnifarious

2

あなたのjpegで判断すると、私はあなたが世界の空間で1ピクセルだと思いますか、実際はそうではないかと思います。おそらく、あなたの投影行列は、あなたが思っているものと全く同じではありません。

GL_POINT_SMOOTHは有効になっていますか? - これは物事を乱している可能性があります。それらのピクセルは奇妙に丸く見えます。

このアルゴリズムを使用することが重要であり、より効率的な方法には興味がないと仮定すると、GL_POINTSを使用する代わりに、各ピクセルごとにクワッドを描画できます。

5

コードなしでは、問題を診断するのは難しいです。ピクセルの実際のレイアウトは、そのアルゴリズムで正しいように見えます。しかし、世界空間をスクリーン空間に直接変換していない投影行列を使用しているようです。

ワールド座標の1つのオフセットが画面空間内のちょうど1ピクセルに相当することを保証できる正投影を使用してください。

関連する問題