ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

枕木の自動配置 2

枕木の自動配置だけど、上下方向にレールを曲げる場合はレールの中心と枕木の中心がずれているせいで工夫が必要になってしまうのか。ということは、対策は以下のいずれかかなあ。

  1. 中心を一致させる
  2. ずれの分補正する
  3. ずれを考慮した計算にする

さて、どれが楽なのやら。中心を一致させるのが一番に見えるけど、枕木の傾きを変える際に位置も同時にずれちゃうからNGっぽいのよね。

・・いや、問題ないのか?よくわからないな。今度図を書いて整理してみよう。

枕木の自動配置

  •  背景
  • スクリプトの仕様
    • 概略仕様
    • 詳細仕様
      • RailroadTiePosition
  • 覚えたことのメモ

 背景

嫌なことに気づいてしまった。勾配ごとに枕木の本数が決まっているということは、曲線レールや直線レールも勾配ごとに枕木の本数が違うということか。直線なら3パターン、曲線なら2パターン。今までは手計算&手動配置でやっていたけど、これは無理だ。何らかの自動化をしないと、面倒な作業が増え続けてしまう。

自動化方法は、3パターンぐらいは思いつく。

  1. Unity上にマップエディタを構築し、レールを置いたときに枕木を自動配置する。
    いつかはやりたいけど、あまりにも工数が多い。しかも、ヤードのシミュレーションという本題からも外れている。
  2. Unity上のスクリプトにより、指定のレールに対し枕木を自動配置する。
    工数はそんなに多くなさそう。Runしていない状態でモデル情報をいじる必要がある。
  3. SketchUp!上のスクリプトにより、指定のレールに対し枕木を自動配置する。
    工数はそんなに多くなさそう。Rubyを学ぶ必要がある。

2.のRunしていない状態でモデル情報をいじるのは将来必要な技術な感じがするけど、Rubyの難易度は低そうだし今回は3.で行ってみることにする。

続きを読む

30kg 10mレールメモ

30kg 10mのレールモデルを作ろうと思ったが、枕木本数の情報などがない。仕方ないので、20mのデータから任意長さのレールについて枕木本数と枕木間隔を求めるスプレッドシートを作った。

枕木本数の計算

枕木本数は、レール長さに比例すると仮定した。なお、枕木あたりの荷重が20mの場合未満となるように小数点以下繰り上げとした。10mの場合の本数を以下に示す。

表 枕木の本数 (レール長10mの場合)

長さ 10 m
線路の形状 丙線 簡易線
基本 13 13
半径≧400m 15 13
勾配≦30‰ 15 13
半径<400mまたは勾配>30‰ 16 15

枕木間隔の計算

  • 軌条継目における枕木間隔(A)
    25mでも20mでも枕木本数に関係なく380mmだったため、本計算でも380mm固定とした。
  • (A)の隣の間隔(B)、中間枕木の間隔(C)の性質
    25m, 20mのデータより、(C)は10mmの倍数であることと、(B)<(C)、(B)は理論値より3mm大きいことが読み取れた。そこで、それぞれ以下のように定めた。
  • 中間枕木の間隔(C)
    関数ceiling(a, b)を、「a以上の最も小さいbの倍数を求める関数」(例:ceiling(114.8, 10)=120)とすると、
    (C)= ceiling((レール長-(A))/(枕木本数-1),10)
  • (A)の隣の間隔(B)
    (B)= (レール長-(A)-(C)*(枕木本数-3))/2+3

10mの場合の計算例を以下に示す。

表 枕木間隔(10mレールの場合)

長さ 10 m    
枕木配置数 13 13 15 16
軌条継ぎ目における間隔 (A) 380 380 380 380
(A)の隣の間隔 763 763 673 588
上記以外 (=中間枕木) の間隔 810 810 690 650

枕木位置および角度の計算

カーブレールを作るには、2つの方法がある。

  1. SketchUp!の拡張機能であるFredoScaleのRadial Bendingをつかって枕木やレールごと曲げてしまう
  2. レールを上記ツールで曲げて、枕木等は個別に再配置

これまでは1.の方法で手抜きして作っていたが、20mレールになって枕木の数が減ったし、先日の調査により直線と曲線では枕木の本数が違うことがわかったため2.の方法にチャレンジしてみた。

カーブしたレールに沿って枕木を配置するには、その位置と角度が必要である。以下、枕木の座標は枕木の中心にあるとする。また、レールの長さ方向の位置は、下図の中心線上の位置とする。(なお、実際のレールでは外側レールの長さに定尺(=20m)という制限があるため、位置の計算は外側レール基準となっているかもしれない)

f:id:donadonasan:20200111172428p:plain

便宜上の各レール名称と、座標系

次図のように、原点から中心線に沿った距離をd, 中心線の半径をr, 枕木の中心座標を(x, y)、y軸と枕木の中心がなす角をα(単位: rad)とする。

f:id:donadonasan:20200111175411p:plain

説明用の図

このとき、

α=d/r

x=r×sin(α)

y=r×(cos(α)-1)

となる。また、枕木がx軸となす角は、(レールが曲がっていない場合を0とするとαに等しくなる。なんか、ものすごく簡単な式になったなあ。

 

レールモデルの再構築

30kg 直線レールのモデルを25mから20mに変更中。変更ついでに、ポリゴン数を削減した。このレールモデル、犬釘までモデリングされてるんだけど犬釘の頭を正12角形で作っていたりしてた。それを、6角形に変更。犬釘の根っこも12角形だったけど、4角形に変更。その他、レールの曲線部を目立たない程度にローポリ化した。25mと20mなので比較は難しいけど、Before / afterでポリゴン数をおよそ半分にできた。

作成したモデルは以下で公開。

 

3dwarehouse.sketchup.com

 

f:id:donadonasan:20200111122118p:plain

25mレール ローポリ前

f:id:donadonasan:20200111132051p:plain

20mレール ローポリ後

f:id:donadonasan:20200111132455p:plain

25mレール ローポリ前

f:id:donadonasan:20200111132612p:plain

20mレール ローポリ後(赤印が変更箇所)




レールの長さと枕木間隔

レールの長さ

稲田 隆著 『鐵道工学 上・下巻(総合工学全集2・土木工学科、13巻の7)』( http://library.jsce.or.jp/Image_DB/s_book/jsce100/htm/061.htm )を見直していたら、30kgfレールの標準長さ(定尺)は20mという記述があった。まずい・・・他と同じ、25mで作ってしまっているよ・・・

■(参考)レールの長さに関する資料

 枕木の間隔

レールのモデルを作るには枕木の間隔を調べなきゃならないんだけど、保線wikiにあるのは25mレール用。しかも、枕木の本数をどう決めればいいのかが書かれていない。そこで、またまた鐵道工学のお世話になる。・・・p.288にそのまんまの表があった。しかも、枕木の本数についての参考となる記述もある!というわけで、転記。なお、いずれも相対式継目の場合。相互式継目の場合は本数が+1となる。線路の種別についてはWikipediaを参照。

 

表 25mレールにおける枕木の本数 (単位: 本)
線路の形状 甲線(特別) 甲線(普通) 乙線
基本 41 39 37
半径≧400m 41 41 39
勾配≦30‰ - 41 39
半径<400mまたは勾配>30‰ - 44 41
 
表 25mレールにおける枕木の間隔 (単位: mm)
枕木配置数 37本 39本 41本 44本
軌条継ぎ目における間隔 (A) 380 380 380 380
(A)の隣の間隔 583 433 533 423
上記以外 (=中間枕木) の間隔 690 660 620 580

注意:レールとレールの間の継目間隔を6mmとしている模様。間隔0とすると6mm余ってしまう。

 

表 20mレールにおける枕木の本数 (単位: 本)
線路の形状 丙線 簡易線
基本 26 25
半径≧400m 30 26
勾配≦30‰ 30 26
半径<400mまたは勾配>30‰ 31 30
 
表 20mレールにおける枕木の間隔 (単位: mm)
枕木配置数 25本 26本 30本 31本
軌条継ぎ目における間隔 (A) 380 380 380 380
(A)の隣の間隔 683 613 498 573
上記以外 (=中間枕木) の間隔 830 800 690 660

注意:レールとレールの間の継目間隔を6mmとしている模様。間隔0とすると6mm余ってしまう。

 

ハンプの丘へとつながる線路の長さ

ハンプを作るため、てきとーに12.5mのレールをR=100で曲げて作ったら、勾配がきつすぎて貨物列車が登れなかったw

f:id:donadonasan:20191104001716p:plain

急勾配すぎた縦カーブレール(12.5m R=100)

じゃあ、どうすればいいのか?ちゃんと作るにはハンプ形状の情報が必要なのだが、現代日本にハンプヤードがないせいか情報が無い・・・塩浜操車場の配線図にもしかすると書かれているか?

senrohaisenzu.cocolog-nifty.com

問題は、配線図の読み方がわからないことだ。解説しているサイトも見当たらないし、書籍も見つからない。おそらく、この図の右下にある図形が勾配を表しているのだろうけど、位置を表しているっぽい数値(2000等)が平面図に書かれている数値と合わないんだよなあ。平面図だと位置2000はハンプのはるか手前になっている。

f:id:donadonasan:20191104014357p:plain

ハンプ勾配?

でも、その下に書かれている‰っぽい数値はそれっぽいんだよなあ・・・。とりあえず、これをハンプ形状と仮定して作ってみるか。

あとで、下記にあるインドの例?と照合してみよう。単位がインチやらヤードやらなので、わけわからないが。

https://www.brainkart.com/article/Types-of-Railway-Yards_4351/