令和4年度春期 応用情報技術者試験 午前 問21
次の方式で画素にメモリを割り当てる640×480のグラフィックLCDモジュールがある。始点(5,4)から終点(9,8)まで直線を描画するとき,直線上のx=7の画素に割り当てられたメモリのアドレスの先頭は何番地か。ここで,画素の座標は(x,y)で表すものとする。〔方式〕・メモリは0番地から昇順に使用する。・1画素は16ビットとする。・座標(0,0)から座標(639,479)までメモリを連続して割り当てる。・各画素は,x=0からx軸の方向にメモリを割り当てていく。・x=639の次はx=0とし,yを1増やす。

- ア 3847
- イ 7680
- ウ 7694
- エ 8978
解答・解説を見る
正解:ウ
AI解説
始点(5,4)から終点(9,8)への直線はdx=4,dy=4で傾き1のため、x=7では y=4+(7-5)=6となり画素(7,6)が対象となる。アドレスは1画素16ビット(2バイト)、1行640画素なので、先頭アドレス=(y×640+x)×2=(6×640+7)×2=3847×2=7694番地となる。 ア: 3847は(6×640+7)の値そのものであり、1画素2バイトであることを掛け忘れた誤った計算結果である。 イ: 7680は6×640×2=7680(y座標分のみのアドレス増分)であり、x=7の分の加算を反映していない値である。 ウ: 正しい。傾き1の直線上でx=7のときy=6となり、アドレス=(6×640+7)×2=7694番地となる。 エ: 8978は座標計算やアドレス計算の途中で誤った値を用いた結果であり、正しい画素位置・アドレス公式とは整合しない。 💡 直線描画問題は、まず(dy/dx)の傾きから対象x座標に対応するy座標を求め、その後「1画素あたりのバイト数×(y×横画素数+x)」でアドレスを算出するという2段階で解くと整理しやすい。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。