見出し画像

Rosso Laboratory

速度変化対応編成長測定スクリプト完成版

あれからまた考えました。その結果、SetEventTimerの秒数間隔が当てにならないのであれば前後で正確な時間を取得してその差を用いれば良いのではないか?と。で計測すると

やはり結構な誤差が出ました(^_^;) でもこれを利用して係数をかければ正確な数値に近づくので出来たようなものです。色々試した結果0.01秒刻みの方が精度が高っかったので

#OBJID=38
import vrmapi
def vrmevent_38(obj,ev,param):
    di = obj.GetDict()
    if ev == 'init':
        obj.SetSNSMode(2)
        di['train'] = 0
        di['timerEID'] = 0
        di['length'] = 0
        di['t1'] = 0
        di['t2'] = 0
        di['tp'] = 0
        di['tt'] = 0
    elif ev == 'broadcast':
        dummy = 1
    elif ev == 'timer':
        if param['eventUID'] == 100:
            di['tt'] = vrmapi.LAYOUT().SYSTEM().GetSystemTime()
            k = (di['tt'] - di['tp']) / 0.01
            #vrmapi.LOG(k)
            di['length'] = di['length'] + (0.0185185 * di['train'].GetSpeed()) * k
            di['tp'] = di['tt']
    elif ev == 'time':
        dummy = 1
    elif ev == 'after':
        dummy = 1
    elif ev == 'frame':
        dummy = 1
    elif ev == 'catch':
        if param['tire'] == 1:
            di['t1'] = vrmapi.LAYOUT().SYSTEM().GetSystemTime()
            di['train'] = obj.GetTrain()
            di['tp'] = vrmapi.LAYOUT().SYSTEM().GetSystemTime()
            di['timerEID'] = obj.SetEventTimer(0.01,100)
        elif param['tire'] == 2:
            di['t2'] = vrmapi.LAYOUT().SYSTEM().GetSystemTime()
            length = (di['t2'] - di['t1']) * 1.85185 * di['train'].GetSpeed()
            obj.ResetEvent(di['timerEID'])
            vrmapi.LOG(' timerlength=' + str(di['length']))
            vrmapi.LOG(' simplelength=' + str(length))
            di['length'] = 0

となりました(^^)/
PVアクセスランキング にほんブログ村


ランキングに参加中。クリックして応援お願いします!

名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「Pythonスクリプト」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事