# Vector3 **命名空间**: `XCEngine::Math` **类型**: `struct` **头文件**: `XCEngine/Math/Vector3.h` **描述**: 三维向量,用于 3D 图形和游戏开发中的位置、方向和缩放计算 ## 概述 Vector3 是 XCEngine 中用于表示三维向量的核心类型,支持常见的向量运算。它广泛用于 3D 图形编程中的位置、方向、速度、缩放等计算场景。 ## 结构体成员 | 成员 | 类型 | 描述 | 默认值 | |------|------|------|--------| | `x` | `float` | X 分量 | `0.0f` | | `y` | `float` | Y 分量 | `0.0f` | | `z` | `float` | Z 分量 | `0.0f` | ## 公共方法 | 方法 | 描述 | |------|------| | [`Zero`](zero.md) | 返回零向量 (0, 0, 0) | | [`One`](one.md) | 返回单位向量 (1, 1, 1) | | [`Forward`](forward.md) | 返回前向向量 (0, 0, 1) | | [`Back`](back.md) | 返回后向向量 (0, 0, -1) | | [`Up`](up.md) | 返回上向量 (0, 1, 0) | | [`Down`](down.md) | 返回下向量 (0, -1, 0) | | [`Right`](right.md) | 返回右向量 (1, 0, 0) | | [`Left`](left.md) | 返回左向量 (-1, 0, 0) | | [`Dot`](dot.md) | 计算点积 | | [`Cross`](cross.md) | 计算叉积 | | [`Normalize`](normalize.md) | 返回归一化向量 | | [`Magnitude`](magnitude.md) | 计算向量长度 | | [`SqrMagnitude`](sqrmagnitude.md) | 计算向量长度的平方 | | [`Lerp`](lerp.md) | 线性插值 | | [`MoveTowards`](movetowards.md) | 移向目标点 | | [`Project`](project.md) | 投影到法向量上 | | [`ProjectOnPlane`](projectonplane.md) | 投影到平面上 | | [`Angle`](angle.md) | 计算两个向量之间的夹角 | | [`Reflect`](reflect.md) | 反射向量 | | [`Normalized`](normalized.md) | 返回归一化副本(实例方法) | ## 运算符 | 运算符 | 描述 | |--------|------| | [`+`](operator_add.md), [`-`](operator_sub.md) | 向量加减 | | [`*`](operator_mul.md), [`/`](operator_div.md) | 向量与标量或分量相乘/相除 | | [`*=`](operator_mul_assign.md), [`/=`](operator_div_assign.md) | 复合赋值运算符 | | [`[]`](./operator_index.md) | 下标访问 x, y, z 分量 | | [`==`](operator_eq.md), [`!=`](operator_neq.md) | 相等性比较 | | [`* (Quaternion)`](quaternion-multiply.md) | 用四元数旋转向量 | ## 使用示例 ```cpp #include "XCEngine/Math/Vector3.h" #include using namespace XCEngine::Math; int main() { Vector3 position(1.0f, 2.0f, 3.0f); Vector3 direction = Vector3::Forward(); float dot = Vector3::Dot(position, direction); Vector3 cross = Vector3::Cross(position, direction); Vector3 normalized = position.Normalized(); std::cout << "Position: (" << position.x << ", " << position.y << ", " << position.z << ")\n"; std::cout << "Dot product: " << dot << "\n"; std::cout << "Normalized: (" << normalized.x << ", " << normalized.y << ", " << normalized.z << ")\n"; return 0; } ``` ## 相关文档 - [Math 模块总览](../math.md) - Math 模块总览 - [Vector2](../vector2/vector2.md) - 二维向量 - [Vector4](../vector4/vector4.md) - 四维向量