3D ベクトル用の小さな数学ライブラリがあり、それを「統一」しようとしています。
vector3f、vector3i、color3、angles などの複数の typedef 構造体を使用する代わりに、次のようにすべてを同じ構造体に入れようとしています。
typedef struct
{
union
{
float x;
float r;
float ax;
int x_int;
};
union
{
float y;
float g;
float ay;
int y_int;
};
union
{
float z;
float b;
float az;
int z_int;
};
} vec3;
型がfloatである限り、すべてがうまく機能しますが、intに落ちると、奇妙な値がいくつかあります(これは理解できます)。私の質問は次のとおりです。構造定義内で直接/自動的にキャストする方法はありますか、それとも float と int の間で型キャストする追加の関数を作成する必要がありますか?
以下の回答により、元の質問を次のように変更する必要があるかもしれません。
以下を同時に処理できるようにするために「統合」する(そして統合するということは、1つの構造体を持っていることを意味します)ための最良の方法は何ですか:
vector3f (float x,y,z) vector3i (int x,y,z) RGB (float r,g,b) RGB (unsigned char r,g,b) オイラー角 (ax, ay, az)
前もって感謝します!