問題タブ [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.units の単位を angular_velocity からdegrees_per_second に変換する
一般的な angular_velocity から度/秒に変換する必要があります。
この問題を説明するために、boostUnits.cpp の例を示します。
次のコンパイラ出力が生成されます。
目的の型指定とその後の変換を達成するための構文は何ですか? degree_per_second 単位を指定する必要がありますか? その場合、どのように指定しますか?
ドキュメント: http://www.boost.org/doc/libs/1_37_0/doc/html/boost_units.html
よろしくお願いいたします。
c++ - boost::units を使用して独自のベース ユニットとコンバージョンを追加する方法
私は現在、boost::units を使用して si 単位でトルクを表していますが、ポンド フィートでトルクが与えられています。したがって、ポンド フィート単位のトルクと、これをサポートするための変換を作成しようとしています。私の怠惰な試みは、単に定義することでした:
そして、次のようにします。
しかし、これではもったいない気がします。2 番目の試みは、pound_foot と呼ばれる新しい基本単位を定義することでした (以下を参照)。しかし、上記と同様の方法で (si ユニットへのキャストを使用して) 使用しようとすると、エラーでいっぱいのページが表示されます。正しいアプローチに関する提案はありますか?
c++ - 線形代数ライブラリとBoost::Unitsの組み合わせ
私はかなりの量の科学的プログラミングを行っており、Boost.Unitsの両方で非常に良い経験をしました。これは、数量のコンパイル時の次元分析を提供します(つまり、数量に単位をタグ付けして、従来の物理的次元分析で多くのエラーをキャッチします)。線形代数の場合は2。
ただし、Eigenには単位の概念がなく、Eigenの行列にスカラー量を設定できますが、2つの量を乗算すると同じ型が生成されると予想されますが、これは明らかに単位には当てはまりません。たとえば、次のようなコードを使用します。
論理的には正しいのに、機能しません。
ユニットをサポートするマトリックスライブラリはありますか?これは、過去には実装が困難であったことで有名であり、C ++ 11をdecltype
使用するとはるかに簡単になりますが、C++03とテンプレートの特殊化で確実に可能になりました。
c++ - ブースト ユニットを使用してコンパイラ エラーの解決策を特定できません
ブースト ユニットのバージョン: 1.45
コンパイラ: Visual Studio 2008
プラットフォーム: Windows 7
エラー: 次のコードをコンパイルすると、エラー C2440 "initializing" : cannot convert from 'boost::units::quantity' to 'boost::units::quantity' が発生します
[
Unit=boost::units::unit>,boost::units::detail::static_power_impl<0>::apply>::type,boost::units::hogogeneous_system>>>>,
Y = double
]
と
[
Unit=myproject::types::myproject_length
]
クラス 'boost::units::quantity' のコンストラクターは 'explicit' で宣言されています
[
Unit=myproject::types::myproject_length
]
ここで何が問題なのかわかりません。次のコードから "radii_t result =" を削除し、IO ステートメントをコメント アウトすると、上記で引用したのと同じエラーが発生します。以下は私が使用したコードです。ブースト ユニットを習得するまで、しばらくお待ちください。
Q1: このエラーの理由は何ですか? エラー出力の内容は、それを理解するのに役立ちました。
Q2: 上記のエラーが発生しなくても、寸法解析に失敗するとおっしゃいました。タイプがradii^-1になることに私たちは同意していると思います。型を正しい累乗で宣言するにはどうすればよいですか?
スティーブン
c++ - boost::units::si::angular_acceleration に値を割り当てるにはどうすればよいですか?
ブースト ユニットでは、通常、静的定数の 1 つを乗算して値を割り当てます。
例えば
しかし、乗数 const が定義されていない場合、どうすればよいでしょうか?
例 これは、boost::units::si::radians_per_second_per_second が定義されていないため、コンパイルされません。
c++ - PhysicalBoost.Unitsユーザー定義リテラル
間もなくユーザー定義リテラル(UDL)ができたので、たとえばGCC 4.7では、、、、、などのリテラルの表現を容易にするためにそれらを使用する(物理)ユニットライブラリ( Boost.Units1+3i
など)を待ち望んで3m
い3meter
ます13_meter
。この動作をサポートするUDLを使用してBoost.Unitsの拡張機能を作成した人はいますか?
c++ - ブースト ユニットの使用に関する質問 - hash_value、count 乗算
ブースト ユニットを独学で習得しようとしていますが、フロートの代わりにユニットを使用する場合に問題が発生しています。
計算にカスタムのダルトン/アム単位を使用しています。私の古いコードは次のように動作します
ただし、ユニットでも同じことを行います(dalton_tは数量のtypedefです)
「バイナリ式のオペランドが無効です」というエラーが表示されます。これは、12 がある種の無次元単位であるべきだということですか?
また、順序付けられていないセットのキーとして質量を使用します。
これにより、ユニットのヘッダー ファイルで定義されているにもかかわらず、「hash_value の呼び出しに一致する関数がありません」というエラーが発生します。
これらのいずれかのアイデアはありますか?
単位ヘッダー ファイルは次のとおりです。
前もって感謝します!
アダム
c++ - ユーザー定義の変換の作成
メートルとキロメートルの単位を作成しようとしています。次に、それらを合計してそれに応じて変換したいと思います。boost::units ライブラリには既に SI システムがあることはわかっていますが、プロジェクト用に独自のシステムを作成する必要があるため、すべてをゼロから作成したいと考えています (学習のためにこれを行っています)。私の目的は、単位を使用して変更できる「長さ」変数を宣言することです。たとえば、次のように記述します
この目的のために、メートルとキロメートルの定義を含むlength.hファイルを作成し、最後にこれら 2 つの単位間の変換を宣言します。
次に、独自の単位系を定義するファイルunits.hを作成します。
少なくとも、メイン関数でこのヘッダーを使用します
このプロジェクトはコンパイルされますが、私が望むことはしません。変数 xLength2 を出力すると、 1500 kmまたは1500000 mではなく1500 mが得られます。私は1800メートルを観察しているので、合計も間違っています。キロメートルをメートルと見なし、変換が機能しないようです。
私が間違っていることは何ですか?
c++ - ユニット強制型を使用しない理由はありますか?
概念的には、単位強制ベースのタイプ(メートル、秒、キログラム)を使用すると、大きな利点(引数を渡す際の余分なチェック、変数内の単位名の削除など)が得られるように思えますが、それほど多くのコードに遭遇していません。それはします。私が見たコードでは、カスタム型が使用されています。
ブーストにはユニット ライブラリ(boost::units だけで十分)があることがわかりますが、(基本的な Google 検索で)広く使用されているという証拠はあまり見られません。
これには正当な理由がありますか?
これらを総合すると、私が期待するほどこの慣行が広く採用されていない何らかの理由があるに違いないことを暗示しているように思われます。なんらかの理由で、価値がある以上のトラブルが発生する可能性がありますか?
そして、私は尋ねます:
ユニット強制型を使用しない理由はありますか? 具体的には、boost::units を使用しない理由はありますか?
c++ - スカラーを boost.units.quantity で乗算する (自動型変換の問題?)
これは本当に最小限の例です。Boost.Unitsを次のように使用しています。
それから時々私は次のようなものが必要です
0.5
コンパイラはとして扱うので、これは問題なく動作しdouble
ます。しかし、REAL
何かが違うとコンパイルエラーが発生します。たとえば、定義をコンパイルエラーに変更すると、次のREAL
ようにlong double
なります。
Boost.Units のドキュメントを調べる と、次のようにオーバーロードされていることがわかりました。operator*
double
スカラーと数量の内部型が同じでなければならないことは定義から明らかですが、変換が暗黙的に実行できる場合 ( from からへのように) コンパイラが自動的に型を変換することを期待しますlong double
。ただし、自動型変換は のような他の単純な関数でも確実に機能するため、何かが欠けている可能性があると思いますlong double f(long double const & ld)
。
私の問題は、私がv_halved = 0.5 * v
非常に多くの式を使用しており、私のプロジェクトがすでにかなり大きくなっていることです。これが問題であることを認識しなければならないことを定義REAL
しなければならないのは今だけです。long double
それで、私はこれに対する回避策/解決策について疑問に思っていました.それがstatic_cast<REAL>(0.5)
解決策になることは承知していますが、コンパイラーがスカラーを適切な型に自動的に変換できないことについて何かが欠けていると感じています.
よろしくお願いします!