車両がドリフトしない 曲線の作成法yukinohana.net/~camino/bve/kyokusenkeisan.pdf2....
TRANSCRIPT
車両がドリフトしない曲線の作成法
Camino
1.車両がドリフトしない曲線の作成法 BVE5.3改善 Track関数に第3引数追加
この改善で他線の曲線の設定が楽になった
次の構文までの平面曲線の設定が可能に 曲線が変化しない限り細かい点を打つ必要はない
設定方法が謎 どうやって設定すればいいのかわからない。 検索してみると自線が直線の場合の分岐か、他線が直線の分岐器での使用方法くらい 未だに数メートルごとに点を打ってる方が多い
【参考】他軌道の関数(抜粋)Track[trackKey].Position(x, y, radiusH, radiusV)
他軌道の位置を設定します。軌道ストラクチャーを配置するには Repeater[].Begin0 構文を使用してください。trackKey: 軌道名 (任意の文字列)x: 自軌道からの x 座標 [m]y: 自軌道からの y 座標 [m]radiusH: 次の Track[].Position 構文までの平面曲線の半径 [m] (0: 直線)radiusV: 次の Track[].Position 構文までの縦曲線の半径 [m] (0: 直線)
2.自線が直線の場合 Yahoo!知恵袋によると
自線が直線で他軌道がR=300で曲がるときはradiusHに300と入力すると右に曲がる 自線が直線で他軌道がR=-300で曲がるときはradiusHに-300と入力すると左に曲がる
103125;Track[1].Position(0, 0,300,0); //R=300Repeater['Rail1'].Begin0(1, 3, 1, 1, 'Rail0');Track[2].Position(4.0, 0,0,0);Repeater['Rail2'].Begin0(2, 3, 1, 1, 'Rail0');
103150;Structure['Kilopost3d'].Put(2, 1.8, 0, 0, 0, 0, 0, 1, 25);Track[1].Position(1.043,0,0,0); //直線
103173;Track[1].Position(2.957,0,-300,0); //R=-300
103198;Track[1].Position(4.0,0,0,0); //直線Track[2].Position(4.0, 0,0,0);
例)S字カーブする他軌道の設定
3.自線が曲線の場合 Yahoo!知恵袋によると
自線がR=300で曲がり、他軌道が直線のときはradiusHに-300と入力すると直線になる 自線がR=-300で曲がり、他軌道が直線のときはradiusHに300と入力すると直線になる
103577;Curve.BeginCircular(300,0);Track[1].Position(4.0,0,-300,0);Track[2].Position(0, 0,-300,0);Repeater['Rail2'].Begin0(2, 3, 1, 1, 'Rail0');
103602;Curve.End();Track[1].Position(2.957,0,0,0);Track[2].Position(-1.043, 0,0,0);
103625;Curve.BeginCircular(-300,0);Track[1].Position(1.043,0,300,0);Track[2].Position(-2.957, 0,0,0);Repeater['Rail2'].End();
103650;Curve.End();Repeater['Rail1'].End();Track[1].Position(0,0,0,0);
例)自線がS字カーブするときの他軌道の設定
4.ここまでのまとめと疑問 知恵袋説のBVE5.3 Track関数に第3引数の設定方法
自線が直線の時:曲線の半径を入力 自線が曲線の時:打ち消すために自線の反対に曲がる値を入力
では、両方が曲線の時は? 検索しましたが解説しているページは見つかりませんでした
直感的には…
自線の半径に近づくほど±∞に近づいていきそう でもどうやって計算すればいいのか
5.radiusH設定の真実 実は、Track構文の解説はちょっと間違い
×「radiusH: 次の Track[].Position 構文までの平面曲線の半径 [m] (0: 直線)」○「radiusH: 次の Track[].Position 構文までの平面曲線の自線との相対半径 [m]
(0: 自線と同じ半径)」
相対半径とは 他線の半径と自線の半径の差
相対半径を計算することで自線も他線もカーブする場合でも使用可能
6.相対半径の求め方 相対半径は曲率の差分の逆数
(詳しい証明は省きます)
曲率:半径の逆数
式で表すと
直線の場合は、半径が∞になるので 1±∞
= 0になります。
例)自線がR300で他軌道が直線の場合
11
他線の半径− 1自線の半径
この計算結果を入力することでなめらかな曲線を作成可能
11∞− 1
300=
1
0 − 1300
= −300
7.自線・他線ともに曲線の場合(1)例)両開きで分岐をする場合
以下のSSのようにR=329のS字でカーブした箇所を作っています。R=329の両開きでは25mで1.9離れるので、S字にすると、50mでちょうど3.8mの複線間隔になります。
7.自線・他線ともに曲線の場合(1)例)両開きで分岐をする場合
他線の相対半径を右の公式で計算します。
40375;Curve.BeginCircular(-329, 0);Repeater['Rail0'].Begin0(0, 3, 1, 1, 'Rail0');Track[1].Position(0, 0,165,0);
40400;Curve.BeginCircular(329, 0.00);Track[1].Position(1.9, 0,-165,0);
40425;Curve.End();Track[1].Position(3.8, 0,0,0);
【相対半径計算の式】1
1他線の半径− 1
自線の半径
11
329 −1
-329=
3292 ≅ 165
11
−329 −1
329=−329
2
≅ −165
いちいち点を打つこと無く曲線を作成することができた。
8.自線・他線ともに曲線の場合(2)例)自線・他線ともに左にカーブしながら合流をする場合
1.さくらいさんの曲線計算プログラムで半径、座標を計算
※座標と曲線を計算できるならば、他のツールでもOKです。合流の場合対照となる広がっている線形を作成したほうが作成しやすいです
8.自線・他線ともに曲線の場合(2)例)自線・他線ともに左にカーブしながら合流をする場合
2. 相対曲線を求める式 の計算結果をradiusHに入力します
す
111875;Track[1].Position (11.174, 0,1200,0);Track[2].Position (15.174, 0,1200,0);Curve.BeginCircular(-1200,0.000);
111900;Track[1].Position (11.419, 0,-2400,0);Track[2].Position (15.419, 0,-2100,0);Curve.BeginCircular(0,0);
111925;Track[1].Position (11.927, 0,-600,0);Track[2].Position (15.927, 0,-260,0);
111950;Track[1].Position (11.731, 0,-300,0);Track[2].Position (14.924, 0,-200,0);
111975;Track[1].Position (10.049, 0,3900,0);Track[2].Position (11.451, 0,240,0);Curve.BeginCircular(-300,0.000);
11
他線の半径 − 1自線の半径
112000;Track[1].Position (7.350, 0,2100,0);Track[2].Position (7.350, 0,0,0);Curve.BeginCircular(-300,0.000);Repeater['Rail2'].End();
112025;Track[1].Position (4.833, 0,1969,0);Curve.BeginCircular(-315,0.000);
112050;Track[1].Position (2.602, 0,1200,0);Curve.BeginCircular(-300,0.000);
112075;Curve.BeginCircular(-200,0.000);Track[1].Position (0.781,0,400,0);
112100;Curve.BeginCircular(-400,0.000);Track[1].Position (0, 0,0,0);Repeater['Rail1'].End();
8.自線・他線ともに曲線の場合(2)例)自線・他線ともに左にカーブしながら合流をする場合
3. きれいな曲線が作成されます。
す
9.まとめ曲線の作成はTrack関数の第3引数を使用すると便利です
計算結果の値は大分直感から離れた値が出ます BVE5.4(BveTs Map 2.00)以降を使用しているなら、計算せずに式をそのまま入れたほうが可読性が高い例)Track[1].Position(0.781,0,1/(1/-400-1/-200),0);
ご活用をご検討ください
10.補足 この相対半径計算方法の注意点
計算を端折っているため距離が長くなれば長くなるほど、正しい値とは差が広がります
さくらい氏の曲線計算プログラム等で25mごとに点を打ってズレを修正することを前提としています。
浮動小数点オタク(命名:狩野孝弘氏)の方など、正確な値が出ないと気がすまない方は、極座標平面の計算をゴリゴリされることをおすすめします。