📅  最后修改于: 2023-12-03 15:09:09.223000             🧑  作者: Mango
在数学中,向量通常可以分成两个部分:大小和方向。对于三维向量,还有一个额外的分量表示向量在Z轴上的投影。在C++和TypeScript中,我们可以用类来表示向量并获取它们的两个部分。
以下是一个简单的C++类,表示一个二维向量:
class Vector2D {
public:
float x, y;
Vector2D(float x_, float y_) : x(x_), y(y_) {}
float magnitude() const { return sqrt(x*x + y*y); }
Vector2D normalized() const {
float m = magnitude();
if (m == 0) return Vector2D(0, 0);
return Vector2D(x/m, y/m);
}
float dot(const Vector2D& other) const { return x*other.x + y*other.y; }
Vector2D operator+(const Vector2D& other) const { return Vector2D(x+other.x, y+other.y); }
Vector2D operator-(const Vector2D& other) const { return Vector2D(x-other.x, y-other.y); }
Vector2D operator*(float s) const { return Vector2D(x*s, y*s); }
Vector2D operator/(float s) const { return Vector2D(x/s, y/s); }
};
其中magnitude()
方法返回向量的大小,normalized()
方法返回一个长度为1的单位向量,dot()
方法返回向量的点积,而各种运算符重载允许我们对两个向量进行加减乘除等运算。
要找到向量的两个部分,我们可以使用以下代码:
Vector2D v(3, 4);
Vector2D direction = v.normalized();
float magnitude = v.magnitude();
在上面的示例中,我们首先创建一个向量(3, 4),然后将其单位化以获取其方向(0.6, 0.8),最后获取其大小。
在TypeScript中,我们可以使用以下类来表示二维向量:
class Vector2D {
constructor(public x: number, public y: number) {}
get magnitude(): number { return Math.sqrt(this.x*this.x + this.y*this.y); }
get normalized(): Vector2D {
const m = this.magnitude;
if (m === 0) return new Vector2D(0, 0);
return new Vector2D(this.x/m, this.y/m);
}
dot(other: Vector2D): number { return this.x*other.x + this.y*other.y; }
add(other: Vector2D): Vector2D { return new Vector2D(this.x+other.x, this.y+other.y); }
subtract(other: Vector2D): Vector2D { return new Vector2D(this.x-other.x, this.y-other.y); }
multiply(s: number): Vector2D { return new Vector2D(this.x*s, this.y*s); }
divide(s: number): Vector2D { return new Vector2D(this.x/s, this.y/s); }
}
在这里,我们定义了与C++中相同的方法来表示向量的大小、单位向量和点积,但是我们使用getter语法糖而不是函数来访问这些方法。
要找到向量的两个部分,我们可以使用以下代码:
const v = new Vector2D(3, 4);
const direction = v.normalized;
const magnitude = v.magnitude;
在上面的示例中,我们首先创建一个向量(3, 4),然后将其单位化以获取其方向(0.6, 0.8),最后获取其大小。
无论是在C++中还是TypeScript中,都可以使用类来表示向量并获取向量的两个部分:大小和方向。代码示例演示了如何实现这些类并使用它们来获取向量的两个部分。