📅  最后修改于: 2023-12-03 15:05:49.094000             🧑  作者: Mango
Vector2 是一个表示 2D 向量的 C++ 类。向量是数学中的重要概念,在计算机图形学,物理仿真等领域都有广泛的应用。
一个二维向量可以表示为 (x, y),在代码中可以用一个 Vector2 类型的变量来存储。Vector2 类型提供了一些常见的向量运算功能,如加减法,点乘/叉乘,单位化等等。
#include<iostream>
#include "Vector2.h"
int main() {
Vector2 a(1.0f, 2.0f);
Vector2 b(2.0f, 1.0f);
Vector2 c = a + b;
Vector2 d = a - b;
Vector2 e = a * 2.0f;
Vector2 f = b / 2.0f;
std::cout << "a + b = (" << c.x << ", " << c.y << ")" << std::endl;
std::cout << "a - b = (" << d.x << ", " << d.y << ")" << std::endl;
std::cout << "a * 2 = (" << e.x << ", " << e.y << ")" << std::endl;
std::cout << "b / 2 = (" << f.x << ", " << f.y << ")" << std::endl;
float dot = Vector2::Dot(a, b);
float cross = Vector2::Cross(a, b);
std::cout << "dot(a, b) = " << dot << std::endl;
std::cout << "cross(a, b) = " << cross << std::endl;
Vector2 normalizedA = a.Normalized();
Vector2 normalizedB = b.Normalized();
std::cout << "Normalized a = (" << normalizedA.x << ", " << normalizedA.y << ")" << std::endl;
std::cout << "Normalized b = (" << normalizedB.x << ", " << normalizedB.y << ")" << std::endl;
return 0;
}
Vector2(); // 以 (0, 0) 初始化
Vector2(float x, float y); // 以 (x, y) 初始化
Vector2 operator+(const Vector2& rhs) const; // 向量加法
Vector2 operator-(const Vector2& rhs) const; // 向量减法
Vector2 operator*(float scalar) const; // 向量与标量的乘法
Vector2 operator/(float scalar) const; // 向量除以标量
bool operator==(const Vector2& rhs) const; // 向量相等判断
float Magnitude() const; // 向量长度
float SqrMagnitude() const; // 向量长度的平方
Vector2 Normalized() const; // 归一化向量
static float Dot(const Vector2& a, const Vector2& b); // 点乘
static float Cross(const Vector2& a, const Vector2& b); // 叉乘
Vector2 类提供了便捷的 2D 向量运算功能,开发者们在实现各种计算机图形学和物理仿真算法时,可以使用该类来方便地计算各种向量运算。