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

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

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

カーブレールを作るには、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とするとαに等しくなる。なんか、ものすごく簡単な式になったなあ。