- @ThothChildren
- 2018.6.26
- PV 534
シンプルに画像に線を描画したい
ー 概要 ー
シンプルな方法を用いて画像に線を描画する方法についてまとめます.高速性と正確性の観点からブレセンハムの線描画アルゴリズムが有名で、頻繁に使用され、また様々なハードウェア実装もされています.
この章を学ぶ前に必要な知識
条件
- 線の始点と終点の位置座標
効果
- ピクセル上に近似した線を描く
- ブレセンハムのアルゴリズムで高速に線を描く
ポイント
- 直線の傾き具合によって複数のケースを用意する必要あり
- 一つずつ座標をずらしたときのもう片方の座標を求め、整数値の近いほうを選択
解 説
単純且つ高速にピクセル画像に直線を描画する方法についてまとめたページです.
最も有名なブレセンハムの線アルゴリズムについて紹介します.
必要なのは線の始点と終点の位置座標で,それを元に直線の式を算出.
y=ax+bを求める.
ブレセンハムの線アルゴリズム
以下では傾きが1以下の場合のみに限って考える.他の傾きの場合は別途考えるがベースの考え方が同じ.ここではxが1進むあたりyが1未満の変化しかないものとする.
1. 直線の式を求める 又は xが1増えるあたりにyがいくら増えるかを求めておく.
2. 始点のx座標から+1しながら[1.]で求めたyの値が整数値のどちらに近いかを求める.
ex)
y=0.4x+3として、始点(0,0)とする.
x = 0 のとき y = 3 (0,3)を塗る
x = 1 のとき y = 3.4 ≒ 3 (1,3)を塗る
x = 2 のとき y = 3.8 ≒ 4 (2,4)を塗る
x = 3 のとき y = 4.2 ≒ 4 (3,4)を塗る
3. 2.で求まった座標を線として塗る.これを終点まで[2.]を繰り返す. | シンプルに画像に線を描画したい |
ブレセンハムのアルゴリズムによる直線の描画.
直線のy値が整数値のどちらに近いかを求めて塗っていく.
傾きが1より大きい場合は、
yを1ずつ増やしてxの値に対して同様の処理を行う. | |
ブレセンハムは高速に見つけられることが特徴.
何も考えずに実装すると不要な処理や割り算が入るため、
あらかじめ繰り返し使う数を求めておいたり
可能な限り除算と小数をなくして計算を高速化する工夫が行われる. | ブレセンハムの詳細 |
この章を学んで新たに学べる
Comments