Imは、3次元ベクトルとImを "統一"しようとするための小さな数学ライブラリを持っています。C 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;
すべては限りタイプがあるよう桃動作します。その代わりvector3f、vector3i、カラー3、角度などのために複数のtypedef構造体を持つの
は...イムは、このように同じ構造体の内側にすべてを置くしようとしています浮動小数点数は、しかし、それは整数intにいくつかの奇妙な値(理解することができます)に落ちる。私の質問です:構造体の定義の中に直接/自動的にキャストする方法はありますか、浮動小数点数と整数の間の型キャストに余分な関数を作成する必要がありますか?下記の回答に
、多分私は次の私の元の質問を変更する必要があります。
「統一」(および統一によって、私は1つの構造体のように持っている意味)であるとする最良の方法は何ですか以下同時に扱うことができる:
vector3f(フロートX、Y、Z) vector3i(INT X、Y、Z) RGB(フロートR、G、B) RGB(unsigned char型のR、 g、b) オイラー角(ax、ay、az)
ありがとうございます!
を求めたものを行うことができました願って、あなたが書きたいyou.Itがjob.Iを行う必要がありますするために私が書いたコードの小さな作品ですstruct/unionに 'int'として渡しますが、' float'として読み込みますか? –
なぜそれを浮動小数点として保持するのではなく、整数値が必要なときにfloatメンバをintにキャストするだけです。 –