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

パスワード:


パスワード紛失

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

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

もっと...

Re: Nasalを知ろう、使おう!

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

なし Re: Nasalを知ろう、使おう!

msg# 1.4
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-7-4 1:52 | 最終変更
Tat  長老   投稿数: 375
エラーの件ですが、FDM の初期化が終わる前にプロパティを参照してますので、空文字列("")が返ってきています (プロパティは存在するけど、値が設定されていない場合は空文字になります)。これを解決するには、FDM 初期化後に WING_SPAN にプロパティの値を代入しなければなりません。

具体的には TouchingPenalty.new() の中で代入処理を行えばよいでしょう。
元々の
TouchingPenalty.WING_SPAN = 8;
は削除する必要はありません。

判定式は、
ゲート中心と機体中心との間の距離 > 全幅 * cos(バンク角)/2
かつ
機体高度 < ゲートの高さ
の場合に接触と見なします。この式では、機体が板状であることを想定していますので、機首や機尾部分で判定されたは誤差を含んでいます。(繰り返し判定はしていません。通過判定時に一度だけです。)

それよりも問題なのは、機体中心とゲート中心との間の距離が、必ずしもゲート中心からゲートのパイロン方向へのズレとは限らないことです。接触判定を行うのは通過判定時ですが、その際に必ずしもゲートのパイロン間を結ぶ直線上に機体中心があるわけではないのです。通過判定式は

 ゲート幅 / 2 <= 機体中心とゲート中心との距離
かつ
機体中心とゲート中心との距離 > 機体中心とゲート中心との距離の最小値

となります。ゲート判定間隔は0.1秒ですから最大誤差は 0.05 秒の間に進む距離となります。一定速度で正確なゲート通過後 0.05 秒後 にゲート中心から N メートルの所でゲート通過と判定されると、判定は 0.1秒前、つまり本当のゲート通過前 0.05 秒の時点での距離となります。(つまりゲート中心のN メートル手前) ゲートのど真ん中を通ったとしても機体中心と N メートルの差があることになります。0.05秒もあれば、T-4なら 10m 程進んでしまいますが、この差が機体進行方向のズレなのか、ゲート中心からパイロン方向へのズレなのかが判定できていません。これによりパイロンギリギリを通ると接触したという判定になってしまうのです。

# んー文字で書くと難しい

ということで、多分ですが、判定間隔を短くすれば精度は向上するはずです。
ただ、もうちょっと考えないといけないと思いますので、近いうちに変更してみます。しばしお待ち下さい。

p.s.
一度コードを書きましたが、ちょっと間違えていたので消しました。もし見た方がいらっしゃったら、忘れてください。
投票数:8 平均点:5.00

投稿ツリー

  条件検索へ


 検索

高度な検索
 新しい登録ユーザ
iwabubaqa 2024-7-27
ukifypo 2024-7-27
fb188steL1 2024-7-27
ecykowo 2024-7-27
apibosuh 2024-7-27
ytyqowy 2024-7-27
edylycu 2024-7-27
ci888staxD 2024-7-27
iwocoloji 2024-7-27
yqixygis 2024-7-27
 最近の画像(画像付)
自作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