質問
これは、現在いくつかの時間のために私を盗聴だものですが、私はそれのために決定的な答えを見つけることができませんでした:標準化2D/3Dベクタ/コーディネートクラス
- はを認識して誰です標準2Dおよび/または3Dベクトル(x、y、zメンバーを持つ構造体)をSTLに導入する提案ですか?
- もしそうでなければ、そのようなクラスを次のバージョンの標準にする現実的な方法がありますか?
- そして、これがまだ行われていない理由は何ですか?
私は確かに貢献したいと思いますが、私は受け入れられるほど十分に高い品質のものを作り出す経験がないと信じています(私はプロのプログラマーではありません)。私はすべての基本的
の独自のバージョンを実装するライブラリやフレームワークの数十(それは、グラフィックス、物理学、数学、ナビゲーション、センサー融合にあることを...)見てきた今では推理/背景
struct Vector2d {
double x,y;
//...
};
/* ...
* operator overloads
*/
および/またはその3D同等物 - すべての機会はもちろん、私が自分で実装した場所で、適切な再利用可能なバージョンを実行する時間がかかりました。
明らかに、これは難しいことではないし、次善の実装について心配しているわけではありませんが、たびに2つのライブラリを組み合わせたり、別のプロジェクトのコードを再利用したりする必要があります。キャストまたは可能であればテキスト置換)。
委員会は、C++ 17(特に2Dグラフィックスフレームワーク)の標準ライブラリを大幅に拡張しようとしているので、私は本当に始めからすべてのインターフェイスに共通の2Dベクトルを焼きたいと思っています。ただ例えば書き込み:
drawLine(transformCoordinates(trackedObject1.estimatePos(),params),
transformCoordinates(trackedObject2.estimatePos(),params));
ではなく
MyOwnVec2D t1{trackedObject1.estimatePosX(), trackedObject1.estPosY()};
MyOwnVec2D t2{trackedObject2.estimatePosX(), trackedObject2.estPosY()};
t1 = transformCoordinates(t1,params);
t2 = transformCoordinates(t2,params);
drawLine(t1.x,t1.y,t2.x,t2.y);
を例は少し誇張されたかもしれないが、私はそれが私のポイントを示していると思います。
私はすでに正しい方向に進んでいることを認識しています。加算や乗算などの標準的な操作が可能ですが、必要なものが2つまたは3つの座標であれば、私は、固定サイズと動的メモリ割り当て(例えばstd::array
に基づく)を持つvalarrayは、特にイテレータの実装が簡単であるため、許容できる解決策になると思いますが、私は個人的にはx、y(およびz )メンバー。
備考:このトピックは、すでに議論されている(と、それはしていない場合、私は驚くだろう)場合は申し訳ありませんが、私は2次元ベクトルを探してるたびに、私はstd::vector<std::vector<T>>
ような何かについて話した結果を得ます特定の変換を実装する方法はありますが、標準化の話題は何もありません。
*このようなクラスを次のバージョンの標準に組み込むための現実的な方法はありますか?完全かつ完全に書かれた提案を自分で書くのは簡単ではありませんか?それがC++の進化です。 –
@BartekBanachewicz:これを行う方法に関するヒントや、(あなたがSW会社で働いていない場合は)提案を書くための助けを求める場所 – MikeMB
私は既存の提案を読むことから始めます。 –