📜  3D 向量的正常初始化 - C++ (1)

📅  最后修改于: 2023-12-03 15:13:08.287000             🧑  作者: Mango

3D 向量的正常初始化 - C++

在C++中,我们可以通过结构体或类来表示三维向量,下面是一个使用结构体的示例:

struct Vector3 {
    float x, y, z;
    Vector3(float x = 0.f, float y = 0.f, float z = 0.f) : x(x), y(y), z(z) {}
};

上述结构体表示一个包含三个浮点型成员变量x、y、z的三维向量,其中构造函数用于实现向量的初始化,可以设置初始值或默认值。

如果需要进行一些常用的向量运算,比如求向量长度、向量与向量的加减乘除等操作,可以在结构体内定义相应的成员函数,下面是一个示例:

struct Vector3 {
    float x, y, z;
    Vector3(float x = 0.f, float y = 0.f, float z = 0.f) : x(x), y(y), z(z) {}

    float length() const {
        return sqrt(x * x + y * y + z * z);
    }

    Vector3 operator+(const Vector3& v) const {
        return Vector3(x + v.x, y + v.y, z + v.z);
    }

    Vector3 operator-(const Vector3& v) const {
        return Vector3(x - v.x, y - v.y, z - v.z);
    }

    Vector3 operator*(float f) const {
        return Vector3(x * f, y * f, z * f);
    }

    Vector3 operator/(float f) const {
        return Vector3(x / f, y / f, z / f);
    }
};

上述代码通过重载加减乘除等运算符,实现了向量的加减乘除等操作,其中乘除运算需要除以一个浮点数,方便进行向量的缩放。

在使用时,可以通过调用成员函数或运算符来进行向量的初始化和操作,下面是一个示例:

Vector3 v1(1.f, 2.f, 3.f);
Vector3 v2(4.f, 5.f, 6.f);
Vector3 v3 = v1 + v2;
float len = v3.length();

上述代码首先创建两个向量v1和v2,并计算它们的和v3,然后通过调用成员函数length()计算向量v3的长度。

总之,在C++中实现三维向量的初始化和操作,需要使用结构体或类,并实现相应的成员函数和运算符重载等操作。