問題タブ [boost-units]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 与えられた量を別の基本単位系に変換する
私はboost-unit
自分のプロジェクトの1つに使用しようとしています。このプロジェクトでは、速度、加速度、角速度などのいくつかの量が SI システムの基本単位で表されます。(m/s、m/s^2、rad/s^2)
ユーザーは、GUI インターフェイスを使用してこれらの量をプロットします。角速度としましょう。GUI では、ユーザーが基本単位を動的に変更できるようにする必要があります。オプションは次のとおりです。
長さ: m、cm、mm
時間: 秒、ミリ秒、分、時間
角度: ラジアン、デグ
boost-unit
私のプロジェクトで使用するには、 のような数量5*m*s^-2*rad
を変換する汎用関数が必要5*1000/M_PI*180*mm*s^2*deg
です。
しかし、この関数を作成するための最良の方法が何であるかを完全に失いました。
次のようなものでなければならないと思います:
どこH1
とはによって構築できるH2
タイプです。homogeneous_system
make_system
c++ - 単位を表す文字列の変換係数を決定する
私のプロジェクトの 1 つで、かなり複雑な単位の変換係数を決定する必要があります。優れたブーストライブラリを使用して、静的に定義されたユニットの場合の静的変換関数を作成できましたBoost.Units
。
私の場合、ユーザーは実行時に変換のタイプを入力するため、動的変換関数が必要です。優れたソリューションは、既に実装されている関数を使用する必要がありますBoost.Units
。これは可能ですか?
私自身の最終的な解決策
いくつかの考えの後、私は自分の問題に対する次の部分的な解決策を導き出すことができました。これは私のニーズには十分です。単位文字列の解析に依存しているboost-spirit
ため、このタスクは非常に簡単です。素晴らしい図書館!
ユニット文字列の解析は、他の人が興味を持っている可能性のある一般的なタスクである可能性があります。したがって、説明のためのテストを含む最終的な解決策をここに投稿します。ここで最も重要な機能はconvertUnit
、ある単位から別の単位への変換係数を計算することです (この変換が可能である場合)。
UnitParser.cpp
UnitParser.h
UnitParserCatch.cpp