我想在C语言中实现数学概念点和向量,使用struct。
我看到了别人的C++实现。
Tuple Point(float x, float y, float z)
{
return {x, y, z, 1.0f};
}
Tuple Vector(float x, float y, float z)
{
return { x, y, z, 0.0f };
}
Tuple::Tuple()
: m_x(0.f)
, m_y(0.f)
, m_z(0.f)
, m_w(0.f)
{
}
Tuple::Tuple(float x, float y, float z, float w)
: m_x(x)
, m_y(y)
, m_z(z)
, m_w(w)
{
}
我不知道我应该如何在C中实现它.这是我所做的。
typedef struct s_tuple
{
double x;
double y;
double z;
double w;
} t_tuple;
typedef struct s_point
{
double x;
double y;
double z;
double w = 1.0;
} t_point
typedef struct s_vector
{
double x;
double y;
double z;
double w = 0.0;
} t_vector
我不知道我做的是否正确。我甚至不知道t_tuple在这个实现中是否有存在的理由。我应该如何解决呢?
一种可能的方法是让 工厂功能 为每个 "类型 "元组创建具有正确值的元组结构。
typedef struct s_tuple
{
double x;
double y;
double z;
double w;
} t_tuple;
t_tuple create_tuple(double x, double y, double z, double w)
{
t_tuple tuple = {
x, y, z, w
};
return tuple;
}
t_tuple create_point(double x, double y, double z)
{
return create_tuple(x, y, z, 1.0);
}
t_tuple create_vector(double x, double y, double z)
{
return create_tuple(x, y, z, 0.0);
}