用C++编写一个三维向量类,要求能实现向量的加、减、点乘和叉乘运算
时间: 2024-04-30 10:24:23 浏览: 178
一个C++实现的三维向量计算案例
5星 · 资源好评率100%
以下是一个简单的C++三维向量类的示例代码,包含了向量加、减、点乘和叉乘运算:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Vector3D {
public:
Vector3D() : x(0), y(0), z(0) {}
Vector3D(double x, double y, double z) : x(x), y(y), z(z) {}
Vector3D operator+(const Vector3D& v) const {
return Vector3D(x + v.x, y + v.y, z + v.z);
}
Vector3D operator-(const Vector3D& v) const {
return Vector3D(x - v.x, y - v.y, z - v.z);
}
double operator*(const Vector3D& v) const {
return x * v.x + y * v.y + z * v.z;
}
Vector3D operator^(const Vector3D& v) const {
return Vector3D(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x);
}
double length() const {
return sqrt(x * x + y * y + z * z);
}
void normalize() {
double len = length();
if (len != 0) {
x /= len;
y /= len;
z /= len;
}
}
void print() const {
cout << "(" << x << ", " << y << ", " << z << ")" << endl;
}
private:
double x, y, z;
};
int main() {
Vector3D v1(1, 2, 3);
Vector3D v2(4, 5, 6);
Vector3D v3 = v1 + v2;
v3.print();
Vector3D v4 = v1 - v2;
v4.print();
double dot_product = v1 * v2;
cout << "Dot Product: " << dot_product << endl;
Vector3D cross_product = v1 ^ v2;
cross_product.print();
return 0;
}
```
该类实现了向量加、减、点乘和叉乘运算,以及向量的长度归一化和输出功能。在主函数中,我们创建了两个三维向量v1和v2,并使用运算符重载实现了向量加、减、点乘和叉乘运算。最后,我们输出了向量的点乘和叉乘结果。
阅读全文