LoginSignup
23JON
@23JON (23 JON)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

線分描画アルゴリズムについて

Q&A

以下の線分描画アルゴリズムは傾きaの絶対値が1以下でなければ正しく動作しないようですが、その理由と、任意の傾きに対応する方法を教えてください。

void drawLine( int x0, int y0, /* 始点 */int x1, int y1, /* 終点 */
 char r, char g, char b ) /* 線分色(RGB) */{
   double x, y, a;
   a = (double)(y1-y0)/(x1-x0);
   /* x0 < x1 でない場合、
   ここで始点と終点の座標を入れ替える */
   /* writePixel(): 点描画関数 */
   writePixel(x0, y0, r, g, b); // 始点描画
    x = x0;
    y = y0;
    while (x < x1) {
     x = x + 1.0;
     y = y + a;
     writePixel(x, (int)(y + 0.5), r, g, b);
    }
 }

また、上記のプログラムを改良して、曲線を書く方法も教えてほしいです。
よろしくお願いします。
0

1Answer

「正しく動作しない」とはどういった状態を表していますか?
もし傾きが1より大きい時に線がつながらないということを表しているのでしたら、そのときは計算の基準を反転してyを増加した時のxの動きを求めてはどうでしょうか?

0

Comments

Your answer might help someone💌