ウォークラリーのGPSログ分析
高校生の健太さんと里香さんは、学校行事のウォークラリーで使うGPSロガーのテストをしている。このロガーは、スタート地点(座標 )を基準とした 2 次元の 座標と 座標(単位:m)を記録する。
健太:「テスト歩行のログが(表1)のように記録されたよ。このデータを使って、歩いた総距離や、チェックポイントを通過したかを判定したいんだ。」
表1:テスト歩行のGPSログ(Log 配列)
| 記録No. (i) | X座標 (m) | Y座標 (m) |
|---|---|---|
| 0 | 30 | 40 |
| 1 | 30 | 60 |
| 2 | 50 | 60 |
| 3 | 90 | 30 |
里香:「このログデータを散布図にすると(図1)、移動した経路がイメージできるわね。」
グラフ
Alt: テスト歩行の移動経路を示す散布図。線は (0,0) から (30,40), (30,60), (50,60), (90,30) へと順番に結ばれている。
健太:「2点間の直線距離は、三平方の定理で計算できるよね。2点 と の間の距離 は、 だ。」
里香:「その計算を使って、記録された 個のログ(配列 X, Y)から総移動距離を計算するプログラム(プログラム1)を考えてみたわ。スタート地点 から最初のログ地点 (X[0], Y[0]) までの距離も加算しているわね。」
プログラム1:総移動距離の計算
// X, Y は座標の配列。N はログの数(表1の場合は N=4)
// Sqrt(n) は n の平方根を返す関数
手続 CalcTotalDistance(X, Y, N)
TotalDist = 0
// スタート地点 (0,0) から最初の点 (X[0], Y[0]) までの距離
dx = X[0] - 0
dy = Y[0] - 0
TotalDist = Sqrt(dx*dx + dy*dy)
// 2点目以降の処理
i = 1
反復 i < N
dx = X[i] - X[i-1]
dy = Y[i] - Y[i-1]
dist = Sqrt(dx*dx + dy*dy)
TotalDist = 【 ア 】
i = i + 1
戻る TotalDist
スタート地点 から、表1の最初のログ地点(記録No. 0) までの直線距離は、何 m か。
その値を整数で答えよ。
ヒント: 整数で答えよ
プログラム1は、各区間の距離 dist を計算し、それを TotalDist に累積していくプログラムである。
【 ア 】 に入る最も適切な字句を、次のA〜Dのうちから一つ選べ。
健太さんは、チェックポイント(CP)を「中心座標 と半径 の円」で定義し、記録されたログ地点 が円の内部または周上にあれば「訪問済み」と判定するルールを考えた。
この判定は、ログ地点とCP中心の距離 が、CPの半径 以下()であるか、すなわち であるかで判定できる。
いま、CPが中心 、半径 (m) で設定されている。表1のログ地点(記録No. 0〜3)のうち、「訪問済み」と判定される地点はどれか。その組み合わせを、後のA〜Hのうちから一つ選べ。
このGPSロガーは、通信機能を使い、10秒ごとにサーバへデータを送信する。送信するデータは、1つのログ地点の 座標と 座標のペアである。
座標と 座標が、それぞれ 16 ビットの符号なし整数として表現される場合、1回の送信で送られる座標データ( と の合計)のサイズは何バイト(Byte)か。
その値を整数で答えよ。ただし、1 バイト = 8 ビットとする。
ヒント: 整数で答えよ