我有一个用于 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;
只要类型是浮动的,一切都很好,但是当它下降到 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)
提前致谢!