ダイブプロフィール分析その2。前回は体内窒素量の算出に挑戦してみましたが、今回は浮上速度違反の検出に挑戦してみます。今回のほうがかなり簡単ですね。順序間違えた。
プログラム。
#!/usr/bin/ruby ALERT_SPEED = 9 profile = {} File.readlines(ARGV[0]).each {|s| rec = s.split(/\s*,\s*/) profile[rec[0].to_i] = rec[1].to_f } ptime = 0 pdepth = 0 profile.keys.sort.each {|time| depth = profile[time] speed = (depth - pdepth) / (time - ptime) * -60 ptime = time pdepth = depth if speed > ALERT_SPEED puts "#{time/60}:#{time%60} (#{depth}m) #{speed}m/min" end }
これに前回と同様、「経過時間(秒)、水深(m)」のCSVデータを食わせます。そうすると、毎分9m以上の浮上を(サンプルポイント単位で)検出し、時間、水深、浮上速度を表示します。
サンプルは前回と同じく、先日の安良里ボートです。
結果。
14:30 (22.3m) 9.6m/min
37:0 (3.7m) 10.8m/min
48:35 (1.1m) 10.8m/min