私はJavascriptでスキャンラインアルゴリズムを実装しようとしています。私のxの計算は線が短くても長くても間違っているようです。これらのエッジが満たされるべきスキャンラインアルゴリズム:エッジのxを計算する
:
これは私の走査線のコードがそれを埋める方法です:
マイエッジテーブルには、これらのフィールドがあります。
et.push({
Ymin: Ymin, // minimum Y of the edge
Ymax: Ymax, // maximum Y
x: Xmin, // X value of Ymin point; updated for every scanline
dx: Xmax - Xmin, // Delta X
dy: Ymax - Ymin // Delta Y
});
新しいXの前夜ry scanlineは次のように計算されます。
この計算では何が問題になっていますか?
「incr」とは何ですか? – usr2564301
各走査線上でxに加算される増分値。私のコードはxの絶対値を計算しません。 – Michael
「incr」は反対にしてはいけませんか? 'dy'ごとに' x'をインクリメントしているようですので、 'dx/dy'が必要です。そうすることで、 'dy'の行を除外する条件が成立します。つまり、ゼロで割ることを避けます。 –