繁体   English   中英

处理C语言中vector3d(x,y,z)运算的最佳方法

[英]Best way to deal with vector3d (x,y,z) operation in c

我正在启动一个项目,我需要在向量之间进行操作。 这是一个学校项目,所以我需要自己做所有事情。 我有这种结构。

typedef struct      s_vector
{
    float           x;
    float           y;
    float           z;
}                   t_vector;

现在,我希望能够以简单的方式在此t_vector之间进行操作。 我的第一个(也是唯一一个)想法是处理这样的功能:

t_vector        *addv(t_vector *a, t_vector *b); // do a += b.

当然,我的必杀技是c ++中的一种“重载运算符”,但是我知道这在c中不存在。

那么对您来说,用c处理这种操作的最佳方法是什么?

与C ++不同,C完全是关于透明度的。 您总是知道发生了什么事。 因此,不支持操作员重做错误的事情,并且这种代码不受欢迎。 因此,您将必须创建一个命名函数来执行所需的操作。

但是,在C ++中,您可能会使add运算符采用常量对象。 您可能也应该在C中执行此操作。

因此,我建议:

t_vector t_vector_add(const t_vector *a, const t_vector *b);

通常,我将按如下方式转换C ++样式的类运算符:

// C++
class Vector {
    public:
        Vector functionA(SomeType argument);
        Vector functionB(Vector argument)const;
        const Vector functionC(const Vector argument);
};

// C
t_vector *t_vector_functionA(t_vector *this, SomeType *argument);
t_vector *t_vector_functionB(const t_vector *this, t_vector *argument);
const t_vector *t_vector_functionC(t_vector *this, const t_vector argument);

当然,如果不需要this指针,也不需要它,则可以使用任何喜欢的命名方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM