目次
はじめに
今回も、応用情報技術者試験の過去問を解いていきます。
今回の問題は グラフィックLCDのメモリ配置(フレームバッファ) に関する問題です。
画面の座標とメモリアドレスの関係を理解しているかがポイントになります。
組込み機器や画像処理では、画素とメモリの対応関係は非常に重要な知識です。
問題
次の方式で画素にメモリを割り当てる 640×480のグラフィックLCDモジュール がある。
始点 (5,4) から終点 (9,8) まで直線を描画するとき、
直線上の x=7 の画素 に割り当てられたメモリのアドレスの先頭は何番地か。

引用:独立行政法人 情報処理推進機構
条件
- メモリは 0番地から昇順に使用
- 1画素 = 16ビット
- 座標 (0,0) 〜 (639,479) まで連続割当
- x方向にメモリを割当
- x=639 の次は x=0 で y+1
つまり、次の順序でメモリが並ぶ。
(0,0) (1,0) (2,0) ... (639,0)
(0,1) (1,1) (2,1) ... (639,1)
(0,2) ...
解答
ウ:7694
解説
① 直線上の座標を求める
始点
(5,4)
終点
(9,8)
差分を求めます。
| 項目 | 値 |
|---|---|
| Δx | 9 − 5 = 4 |
| Δy | 8 − 4 = 4 |
つまり
傾き = 1
よって直線は
y = x − 1
になります。
② x=7 のときの y を求める
y = 7 − 1
y = 6
したがって対象の画素は
(7,6)
です。
③ メモリアドレスを求める
メモリは 横方向(x方向)に並ぶため
アドレス計算は次の式になります。
アドレス = y × 640 + x
計算します。
= 6 × 640 + 7
= 3840 + 7
= 3847
これは 画素番号です。
④ 1画素は2つの番地を使って表す
図よりメモリの各番地のサイズ 8ビットとなっています。
また、条件より 1 画素は 16ビットです。
つまり、 1 つの画素を 2 つの番地を使って表すことになります。
したがって
アドレス = 3847 × 2
= 7694
結果
| 座標 | 画素番号 | 番地 |
|---|---|---|
| (7,6) | 3847 | 7694 |
したがって
7694番地
になります。
図解(メモリ配置)
メモリは次の順序で割り当てられます。
y=0
(0,0) → 0
(1,0) → 1
(2,0) → 2
...
(639,0)
y=1
(0,1)
(1,1)
(2,1)
つまり
アドレス = y × 横幅 + x
となります。
画素とメモリの対応
| 座標 | 画素番号 | 番地 |
|---|---|---|
| (0,0) | 0 | 0,1 |
| (1,0) | 1 | 2,3 |
| (2,0) | 2 | 4,5 |
| … | … | … |
| (639,0) | 639 | 1278、1279 |
| (0,1) | 640 | 1280、1281 |
| (1,1) | 641 | 1282、1283 |
体系的位置づけ
この問題は次の分野に属します。
コンピュータシステム
└ ハードウェア
└ 入出力装置
└ グラフィック表示
└ フレームバッファ

コメント