Files
XCEngine/docs/api/math/vector4/vector4.md
ssdfasd f5a34f8adc docs: 重构 API 文档 - components 和 scene 模块
- components: 修复英文标题为中文,添加缺失组件文档
  - 新增 camera-component, light-component, audio-source-component, audio-listener-component 类总览
  - 修复 get-position.md 格式
  - 更新 components.md 模块总览
- scene: 修复方法文档格式,新增缺失方法
  - 修复 find.md, create-game-object.md 英文标题
  - 新增 FindByID, SerializeToString, DeserializeFromString 方法文档
  - 更新 scene.md 类总览方法列表
2026-03-26 01:50:27 +08:00

72 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Vector4
**命名空间**: `XCEngine::Math`
**类型**: `struct`
**头文件**: `XCEngine/Core/Math/Vector4.h`
**描述**: 四维向量,用于齐次坐标变换和四元数相关计算
## 概述
Vector4 是四维向量结构体,常用于:
- 齐次坐标变换x, y, z, w
- RGBA 颜色表示
- SIMD 矢量操作
- 四元数分量存储
## 结构体成员
| 成员 | 类型 | 描述 | 默认值 |
|------|------|------|--------|
| `x` | `float` | X 分量 | `0.0f` |
| `y` | `float` | Y 分量 | `0.0f` |
| `z` | `float` | Z 分量 | `0.0f` |
| `w` | `float` | W 分量(齐次坐标) | `0.0f` |
## 公共方法
| 方法 | 描述 |
|------|------|
| [`Vector4()`](constructor_default.md) | 默认构造函数,创建零向量 |
| [`Vector4(x, y, z, w)`](constructor.md) | 从四个分量构造向量 |
| [`Vector4(Vector3, w)`](constructor-vector3.md) | 从 Vector3 构造w 默认 0 |
| [`Zero`](zero.md) | 返回零向量 (0, 0, 0, 0) |
| [`One`](one.md) | 返回单位向量 (1, 1, 1, 1) |
| [`Dot`](dot.md) | 计算两个向量的点积 |
| [`Project`](project.md) | 将向量投影到法线向量上 |
| [`ToVector3`](to-vector3.md) | 转换为 Vector3 |
| [`operator[]`](./operator-brackets.md) | 下标访问分量 |
| [`operator+`](operator-add.md) | 向量加法 |
| [`operator-`](operator-sub.md) | 向量减法 |
| [`operator*`](operator-mul.md) | 向量数乘 |
| [`operator==`](operator-eq.md) | 相等比较 |
| [`operator!=`](operator-ne.md) | 不等比较 |
## 使用示例
```cpp
#include <XCEngine/Core/Math/Vector4.h>
#include <XCEngine/Core/Math/Vector3.h>
#include <cstdio>
int main() {
Vector4 a(1.0f, 2.0f, 3.0f, 4.0f);
Vector4 b(4.0f, 3.0f, 2.0f, 1.0f);
Vector4 sum = a + b;
Vector4 scaled = a * 2.0f;
float dot = Vector4::Dot(a, b);
Vector4 projected = Vector4::Project(a, Vector4(1.0f, 0.0f, 0.0f, 0.0f));
Vector3 v3 = a.ToVector3();
return 0;
}
```
## 相关文档
- [Math 模块总览](../math.md) - Math 模块总览