php フィートからメートル、ノットからキロメートル毎時への変換 ソースと解説
Microfoft Flight Simulator Version 3から始めてFlight Simulator X(FSX)まで続けています。飛行機の世界では高度はフィート、速さはノットで表しますが、はじめからそれで慣れてしまったので特に苦には感じませんでした。しかし、ここ一年ほど飛んでなかったので、改めて考えると、巡航高度25000フィートってどれぐらいの高さなんだろう、とか、軽飛行機の離陸速度80ノットって時速何キロメートルなんだろう、という疑問がわいてきました。今更ながらなんですが、今回はその変換プログラムを作ってみました。
フィートからメートルへの変換またはノットからキロメートル毎時の変換をして結果を表示します。
プログラム言語:PHP
データベース:無し
動作条件
インターネットに接続してある標準的なWebブラウザで動きます。(Firefox、Safari、Chromeを推奨)
ソース
実際の文字コードはUTF-8ですが、ここではShift-JISにして表示します。
MVC | file name | 概要 |
---|---|---|
Controller | flight.php | プログラムの本体 |
Model | flight_model.php | 表示する画像のファイル名を生成する関数とフィートからメートル、ノットから時速への変換関数を定義 |
View | flight_tmpl.php | 画面を表示するテンプレート |
flight_main.php | 画像と入力フォームと計算結果の表示 | |
header.php | 共通ヘッダー | |
footer.php | 共通フッター |
controllers/flight.php
- パラメータ無しで呼び出されたときは、入力フォームのみを表示します。
- 入力フォームから呼び出されたときは、入力された文字のチェックをします。
- チェック・エラーならば、その旨を連想配列にセットします。
- チェックOKならば、それぞれの変換をして結果を連想配列にセットします。
- 結果は入力フォームの下に表示するので、続けて入力ができます。
models/flight_model.php
- 画像ファイル名はav256.jpgのようにavの後に三桁の数字が付くのですが、この数字を乱数で決めています。
ちなみにavはaviationの略です。 - feet_to_m関数では1フィートを0.3048メートルとして変換をします。
- knot_to_km関数では1ノットを1.852キロメートル毎時として変換をします。
- 結果の値は小数点以下を四捨五入しています。
- また、大きな数字になる場合は三桁毎にコンマを付けています。
- 結果の文字列には結果の値だけでなく、元の入力値もセットします。
views/flight_main.php
- 画像を表示しているのは、単なるおまけです。
- 整数部分はキーボードからの入力です。
- 入力エラーメッセージは赤で表示します。
- 計算結果は枠を付けて表示します。
- ソースと解説のページ(このページ)へのリンクがあります。
views/flight_tmpl.php
- スタイルシートを読み込んでxhtmlを構成します。
- ヘッダー(header.php)を組み込みます。
- 計算した結果の表示と入力フォーム(flight_main.php)を組み込みます。
- フッター(footer.php)を組み込みます。
- 完成したhtmlがブラウザに送られて画面が表示されます。
- 入力フォームの「メートルへの変換」ボタンを押すと、コントローラflight.phpのfeettom関数に変数feet(入力文字)が送られます。
- 入力フォームの「キロメートル毎時への変換」ボタンを押すと、コントローラflight.phpのknototokmm関数に変数knot(入力文字)が送られます。
実行
左の画像をクリックして実際に使ってみて下さい。
なお、トップページからも簡単に使えるようにしています。
2016年1月23日 記