logo
ホーム •  フォーラム •  日本語wikiトップ •  アカウント情報 •  サイト内検索 •  新規登録
 ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
 メインメニュー
 米国サイト
 オンライン状況
124 人のユーザが現在オンラインです。 (3 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 124

もっと...

Re: 787の起動について(Re: 本体の起動について)

このトピックの投稿一覧へ

なし Re: 787の起動について(Re: 本体の起動について)

msg# 1.4.1.1
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009-3-27 2:17 | 最終変更
toshi  長老   投稿数: 1527
samさん

toshiです。

私が787/Nasal/system.nasは正しいと思っている件について、私なりの考えをご説明したいと思います。
ただし、私もプログラミング言語全般に関する詳しい知識を持っているわけではないので、間違いに気付いた方はフォローをお願いします。

samさんは、787/Nasal/system.nasにある
if(getprop("/sim/model/start-idling")) [

if(getprop("/sim/model/start-idling")== 0) [
にするのが【文法的に】正しいのではないか、とお考えになったのでしたね、

私は、そのどちらも【文法的に】正しいと思います。
ただし、後者(samさんの修正)はその意味するところが変だと思います。

まず最初に、FlightGearはプロパティツリーという構造を使っており、プロパティと呼ばれるFlightGear内部の状態変数を書き換えることで、機体の挙動やマルチプレイヤーの機体の表示といった、あらゆる動作を実現しています。
# wikiの「訳)特徴」にごく簡単な説明があります。

プロパティツリー (FlightGearメニューの[File]>[Browse Internal Properties])からたどるとと良く分かるのですが、/sim/model/start-idlingの変数型はブール型(論理型)です。

ブール型は、真か偽かの2値を持っており、真なら1、偽なら0で表現する方法が(nasalに限らず)良く使われています。

/sim/model/start-idlingの値は、787フォルダの中でまずはじめにロードされる機体設定ファイルAircraft/787/787-set.xmlにある
<start-idling type="bool">0</start-idling>
により、0に設定されています。
また、start-idlingという名前からすると、これはFlightGear起動時のエンジン状態を設定するためのプロパティであり、アイドル(つまり動いている)状態なら1、停止状態なら0のであることが想像できます。。
従って、作者は、デフォルト設定として、FlightGear起動時にエンジン停止状態とすることを意図としています。
ただし、おそらくユーザの利便性も考えて、この値を1に書き換えればエンジンアイドル状態でFlightGearを起動できるように、このプロパティをわざわざ作ってくれているのだと思います。

次に、787/Nasal/system.nasにある
if(getprop("/sim/model/start-idling")) {
 setprop("/systems/electrical/outputs/eec-Lbus", 30);
(中略)
}
else {
 setprop("/sim/model/Boeing-787-8/n1[0]",0);
(中略)
};
の部分は初期化ルーチンの中にあります。
/sim/model/start-idlingのプロパティの値を取得(getprop)し、真の時はエンジンを始動するために必要なプロパティを設定(setprop)し、偽のときは逆にelse以下でエンジンを止めています。
# getpropやsetpropといったnasalコマンドの詳細に興味がある方は、wikiの「Nasal マニュアル」をご参照ください。

先に示したように、/sim/model/start-idlingの値は0ですので、最初のif文に0(偽)が代入され、else以下のコマンドが実行されます。
そのために、787はエンジン停止状態で起動するわけです。

ここでもし、samさんが行ったように
if(getprop("/sim/model/start-idling")== 0) [
と書き換えると、if文の中身は真になりますので、既にご経験されたように、エンジンが始動した状態で起動することになります。

このsamさんの修正は、【文法的には】おかしくないので文法エラーは発生しませんが、【その意味するところ】としては変です。
なぜなら、「もしstart-idlingが0ならばエンジン始動状態に、1ならばエンジン停止状態に初期化する」というあべこべの意味になってしまうからです。

以上、説明が下手ですみませんが、なんとなくでもお分かりいただけましたでしょうか?
投票数:4 平均点:5.00

投稿ツリー

  条件検索へ


 検索

高度な検索
 新しい登録ユーザ
owanelu 2024-5-7
ytynug 2024-5-7
yfybomi 2024-5-7
ewegy 2024-5-7
ujyjuja 2024-5-6
aluvyv 2024-5-6
ajonyw 2024-5-6
yewanam741 2024-5-6
iwyzuciw 2024-5-6
ydykiver 2024-5-6
 最近の画像(画像付)
自作11機目 F/A-18... (2022-5-27)
自作11機目 F/A-18...
飛んでみる八尾空港 (2022-4-10)
飛んでみる八尾空港
作ってみる八尾空港 (2022-4-2)
作ってみる八尾空港
F117 nighthawk (2021-5-19)
F117 nighthawk
HiTouchさん宛の画像... (2020-11-8)
HiTouchさん宛の画像...
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Theme designed by OCEAN-NET