2012-01-13 7 views
1

2D三角形内のすべての線に対して走査線を取り出す方法を教えてください。任意の2次元三角形の走査線の取得

2Dソフトウェアレンダラの最も基本的な機能、テクスチャマッピングの三角形の最も基本的な機能を実装しようとしています。私はOpenGLを使って数えることができる以上に多くのことをやったことがありますが、私は自分でそれをやろうとしているときに自分自身を痛感しています。

三角形(3つの頂点のそれぞれが[0,1]にクランプされたテクスチャ座標を持つ)を塗りつぶすためには、3つの点の間を線形補間する必要があるという記事があります。何?私は補間が2つのn次元値の間にあると思った。

注記:これは3Dではなく、厳密には2Dです。すべての三角形は任意です(決して軸に整列しません)。 OpenGLのやり方と同じように、テクスチャで画面を塗りつぶすだけです。私は解決策としてOpenGLを使うことはできません。

答えて

2

優れた答えと説明はここで見つけることができます:http://sol.gfxile.net/tri/index.html

あなたは側面を見つける/描画するBresenham algorithmを使用することができます。

+0

これは実際にはかなり意味があります。私は三角形の各辺を補間してからスキャンラインを作っていなければならないと私は完全にわかっていませんでした。 – Knetic

+1

@Knetic - もっと効率的な新しい方法を思いつくことができたら、後ろを押さえていないし、現在の方法で制限されていると感じることはありません。それが私たちが進歩する唯一の方法です。 :) –

1

スキャンラインアルゴリズムを使用する場合は、2つのステップで補間する方法があります。最初に、三角形のエッジの値を補間し、スキャンラインの描画を開始するときに、そのスキャンラインの開始値と終了値の間を補間します。

2次元で作業しているので、マトリックス変換を使用してスクリーン座標をテクスチャ座標にすることもできます。昨日私は同様の質問hereに答えました。この技術は数学ではchange of basisと呼ばれています。

関連する問題