Daily Archives: May 5, 2015

なるべく座標を打たずに線路を引く

奈良線のBve5対応では、他列車が走行する線路(Track)の整備に難儀しました。

他列車を動かすためには……

  1. 1つのTrackが他列車の経路となる。決めたTrackを全区間にわたって走り続けなければならない
  2. Trackには適切な相対半径を入れておくか、座標を十分に高頻度で設定する必要がある。さもなくばドリフト走行のような見た目になる

このうち1は、Bve4からの変換でスタートしたことから深刻であり、Bve2/4で線路の構文を使って地形などを作っていたもの問題となったため解消を行いました。

次に2の対策として、高頻度で座標を打つ方式はBve5.2以前はこの方法しかなかったので競馬場線で実施したものの結果はMapファイル内が大変見づらく保守性が下がるため、奈良線ではBve5.3で追加された「相対半径」を用いることにしました。

相対半径の考え方

そもそも相対半径とは、座標空間において「自線がある半径R」の円曲線のとき、

  • 自線と平行にカーブしている状態を相対半径0
  • 座標空間で直線となっている他線の相対半径は -R

としています。下図「分岐曲線の考え方1」は片開き(右)分岐における、自線が直進側になる場合と、分岐側になる場合の構文例です。他線を直進させるには自線の半径を正負逆にして入れればよいことがわかります。これにより、Track構文で他線をカーブさせたり、直進させたりすることができるようになりました。

この考え方を「分岐曲線の考え方2」では両開き分岐に適用したもので、この場合「自線の半径」と「他線の半径」それぞれの逆数を取って加減算後にふたたび逆数を取ります。

相対半径の考え方

相対半径の考え方

緩和曲線を端折る

分岐付帯曲線や工事区間などを除き、本線のカーブには緩和曲線がついていることが普通ですが、緩和曲線は、その全長にわたって半径が変化するため、座標を打つ点を少なくするには値を丸めてやる必要があります。

奈良線では施工箇所ごとにいくつかの方法を試みましたが、もっとも合理的だった方法を紹介します。これは、櫻井氏(http://nyobo.fr.a.u-tokyo.ac.jp/)のBve2/4向け曲線計算ツールをそのまま使える点も考慮し、円曲線半径に下図「緩和曲線の代用半径」の倍率を掛けて25mごとに区切ってしまうものです。区切ってしまえば座標計算を既存ツールでできるほか、前述の相対半径で補完も可能になります。

相対半径を緩和曲線に適用するための代用半径

相対半径を緩和曲線に適用するための代用半径

なお、緩和曲線上の座標計算に関してはk40s2氏(http://gri.s60.xrea.com/)が「緩和曲線を伴う他線との間隔計算ファイル」とともに解説されています。精密さを求める方には、拙作の手法よりも優れた方法がありますのでご参照いただければと思います。


また今回、下図のように実施例を用意しました。OneDriveからダウンロード

本サンプルの線路・地面などのストラクチャはBveのアドオン作成の目的でご自由にご利用頂けます。

サンプルに盛り込んだ線路形状

サンプルに盛り込んだ線路形状