1

スキャンラインアルゴリズムを実装している間、私は途中で(またはあなたが言うことができる最初に)立ち往生しています。私はパリティテストに従います。つまり、

for each scanline

edgeCnt = 0; 

for each pixel on scanline (l to r)

 if (oldpixel->newpixel crosses edge)

  edgeCnt ++;

// draw the pixel if edgeCnt odd

if (edgeCnt % 2)

  setPixel(pixel);

三角形に頂点 A(10,10)、B(100, 100)、C(200, 30) があるとします。このアルゴリズムの問​​題は次のとおりです。ポイント A はカウントできません。これをカウントすると、同じ水平線上でエッジが検出されず、A の後の線全体が色付けされるためです。頂点を除外すると、頂点 C の前のピクセルが色付けされますが、スキャンでは頂点が検出されないため、C は検出されず、次に高いラインのエッジが検出されるまでラインの色付けが続けられます。

これに対する標準的な解決策はありますか?

4

1 に答える 1

0

頂点で方向の変化がある場合は、それを数えないでください。方向が同じ場合は、数えます。また、線が水平の場合は無視して、次の頂点と照合します。

于 2012-10-14T02:55:45.320 に答える