geometry2d
Class Summary
OHOS::Line
表示由起点和终点构成的线段
- 构造:
Line(const Vector2<int16_t>& a, const Vector2<int16_t>& b)、Line(int16_t x1, int16_t y1, int16_t x2, int16_t y2) -
成员函数:
接口名称 功能简述 Line 通过起点和终点坐标构造线段 operator[] 获取线段的起点或终点 -
使用包含头文件:
#include "gfx_utils/geometry2d.h" - 声明头文件:
middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/geometry2d.h - 公有运算符:
Vector2<int16_t>& operator[](uint8_t index)、const Vector2<int16_t> operator[](uint8_t index) const - 继承关系:HeapBase
- 嵌套类型:无
- 模板形参:无
OHOS::Polygon
表示由顶点坐标构成的多边形,顶点数量不超过 MAX_VERTEX_NUM
- 构造:
explicit Polygon(const Rect& rect)、Polygon(const Vector2<int16_t>* vertexes, const uint8_t vertexNum) -
成员函数:
接口名称 功能简述 Polygon 通过矩形或顶点数组构造多边形 MakeAABB 获取包含该多边形的最小矩形 GetVertexNum 获取多边形的顶点数量 SetVertexNum 设置多边形的顶点数量 operator[] 获取多边形的指定顶点 operator= 将矩形赋值给多边形 -
使用包含头文件:
#include "gfx_utils/geometry2d.h" - 声明头文件:
middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/geometry2d.h - 公有运算符:
const Vector2<int16_t> operator[](uint8_t index) const、Vector2<int16_t>& operator[](uint8_t index)、Polygon& operator=(const Rect& rect) - 继承关系:HeapBase
- 嵌套类型:无
- 模板形参:无
Functions
自由函数
OHOS::Intersect
bool OHOS::Intersect(const Line& a, const Line& b, Vector2<int16_t>& out)
功能说明
- 判断线段 a 和线段 b 是否相交
- 若相交,通过出参 out 返回交点坐标
- 用于线段碰撞检测与交点计算场景
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| a | const Line& | 入参只读引用,线段 a | 有效的 Line 对象 |
| b | const Line& | 入参只读引用,线段 b | 有效的 Line 对象 |
| out | Vector2 |
出参引用,交点坐标 | 由被调用方写入 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| out | Vector2 |
两线段相交时的交点坐标,由被调用方写入 |
返回值
- 返回类型:
bool
返回两线段是否相交
| 返回值 | 触发场景 |
|---|---|
| true | 两线段相交 |
| false | 两线段不相交 |
OHOS::IsIntersect
bool OHOS::IsIntersect(const Line& a, const Line& b)
功能说明
- 判断线段 a 和线段 b 是否相交
- 仅返回相交与否,不计算交点
- 用于仅需判断相交状态的场景
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| a | const Line& | 入参只读引用,线段 a | 有效的 Line 对象 |
| b | const Line& | 入参只读引用,线段 b | 有效的 Line 对象 |
返回值
- 返回类型:
bool
返回两线段是否相交
| 返回值 | 触发场景 |
|---|---|
| true | 两线段相交 |
| false | 两线段不相交 |
OHOS::Clip
void OHOS::Clip(Polygon& poly, const Line& line)
功能说明
- 使用线段裁剪多边形
- 裁剪结果直接写入入参 poly
- 用于多边形与线段的裁剪运算
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| poly | Polygon& | 入参引用,待裁剪的多边形,裁剪结果写入该对象 | 有效的 Polygon 对象 |
| line | const Line& | 入参只读引用,用于裁剪的线段 | 有效的 Line 对象 |
OHOS::SuthHodgClip
Polygon OHOS::SuthHodgClip(const Rect& clipRect, const Polygon& polygon)
功能说明
- 使用 Sutherland-Hodgman 算法以矩形裁剪多边形
- 返回裁剪后的新多边形对象
- 用于矩形视口裁剪场景
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| clipRect | const Rect& | 入参只读引用,用于裁剪的矩形 | 有效的 Rect 对象 |
| polygon | const Polygon& | 入参只读引用,待裁剪的多边形 | 有效的 Polygon 对象 |
返回值
- 返回类型:
Polygon
返回裁剪后的多边形
| 返回值 | 触发场景 |
|---|---|
| Polygon | 裁剪后的多边形 |
OHOS::Clip
void OHOS::Clip(const Line& line, const Polygon& poly, Vector2<int16_t>* pOut, uint8_t* pNum)
功能说明
- 使用线段裁剪多边形并获取交点
- 交点通过出参 pOut 返回,交点数量通过出参 pNum 返回
- 用于需要获取线段与多边形所有交点的场景
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| line | const Line& | 入参只读引用,用于裁剪的线段 | 有效的 Line 对象 |
| poly | const Polygon& | 入参只读引用,待裁剪的多边形 | 有效的 Polygon 对象 |
| pOut | Vector2 |
出参指针,交点坐标数组 | 不为 nullptr,指向的内存空间由调用方分配 |
| pNum | uint8_t* | 出参指针,交点数量 | 不为 nullptr |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| pOut | Vector2 |
交点坐标数组,由被调用方写入 |
| pNum | uint8_t* | 交点数量,由被调用方写入 |
OHOS::Line
Line
Line(const Vector2<int16_t>& a, const Vector2<int16_t>& b)
功能说明
- 通过起点和终点构造线段
- 调用者需确保传入的 Vector2 对象已正确初始化
- 构造后可通过 operator[] 访问起点和终点
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| a | const Vector2 |
入参只读引用,线段起点 | 有效的 Vector2 |
| b | const Vector2 |
入参只读引用,线段终点 | 有效的 Vector2 |
Line(int16_t x1, int16_t y1, int16_t x2, int16_t y2)
功能说明
- 通过起点和终点的坐标值构造线段
- x1、y1 为起点坐标,x2、y2 为终点坐标
- 构造后可通过 operator[] 访问起点和终点
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| x1 | int16_t | 起点X坐标 | int16_t 取值范围 |
| y1 | int16_t | 起点Y坐标 | int16_t 取值范围 |
| x2 | int16_t | 终点X坐标 | int16_t 取值范围 |
| y2 | int16_t | 终点Y坐标 | int16_t 取值范围 |
operator[]
Vector2<int16_t>& operator[](uint8_t index)
功能说明
- 获取线段的起点或终点引用
- index 为 0 时获取起点,为 1 时获取终点
- 返回引用可修改对应端点
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| index | uint8_t | 端点索引 | 0(起点)或 1(终点) |
返回值
- 返回类型:
Vector2<int16_t>&
返回指定端点的引用
| 返回值 | 触发场景 |
|---|---|
| Vector2 |
index 为 0 返回起点引用,index 为 1 返回终点引用 |
const Vector2<int16_t> operator[](uint8_t index) const
功能说明
- 获取线段的起点或终点只读副本
- index 为 0 时获取起点,为 1 时获取终点
- const 成员函数,不修改对象状态
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| index | uint8_t | 端点索引 | 0(起点)或 1(终点) |
返回值
- 返回类型:
const Vector2<int16_t>
返回指定端点的只读副本
| 返回值 | 触发场景 |
|---|---|
| const Vector2 |
index 为 0 返回起点副本,index 为 1 返回终点副本 |
OHOS::Polygon
Polygon
explicit Polygon(const Rect& rect)
功能说明
- 通过矩形构造多边形,矩形的四个角作为多边形的顶点
- 构造后多边形的顶点数量为 4,顶点按顺时针排列
- explicit 构造函数,禁止隐式转换
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| rect | const Rect& | 入参只读引用,用于构造多边形的矩形 | 有效的 Rect 对象 |
Polygon(const Vector2<int16_t>* vertexes, const uint8_t vertexNum)
功能说明
- 通过顶点数组和顶点数量构造多边形
- 顶点数量不能超过 MAX_VERTEX_NUM(8)
- 调用者需确保 vertexes 指针不为空且指向有效数据
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| vertexes | const Vector2 |
入参只读指针,顶点坐标数组 | 不为 nullptr,指向有效内存 |
| vertexNum | const uint8_t | 顶点数量 | 1 ~ MAX_VERTEX_NUM(8) |
MakeAABB
Rect MakeAABB() const
功能说明
- 获取包含该多边形的最小外接矩形(AABB)
- 所有多边形顶点均在该矩形内部
- const 成员函数,不修改对象状态
返回值
- 返回类型:
Rect
返回包含该多边形的最小外接矩形
| 返回值 | 触发场景 |
|---|---|
| Rect | 包含多边形所有顶点的最小矩形 |
GetVertexNum
uint8_t GetVertexNum() const
功能说明
- 获取多边形的顶点数量
- const 成员函数,不修改对象状态
- 返回值为当前多边形的顶点数
返回值
- 返回类型:
uint8_t
返回多边形的顶点数量
| 返回值 | 触发场景 |
|---|---|
| uint8_t | 当前多边形的顶点数量,范围 0 ~ MAX_VERTEX_NUM(8) |
SetVertexNum
void SetVertexNum(uint8_t vertexNum)
功能说明
- 设置多边形的顶点数量
- 调用者需确保设置的顶点数量不超过 MAX_VERTEX_NUM
- 设置后需配合 operator[] 逐个设置顶点坐标
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| vertexNum | uint8_t | 顶点数量 | 0 ~ MAX_VERTEX_NUM(8) |
operator[]
const Vector2<int16_t> operator[](uint8_t index) const
功能说明
- 获取多边形指定索引处顶点的只读副本
- const 成员函数,不修改对象状态
- index 需小于当前顶点数量
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| index | uint8_t | 顶点索引 | 0 ~ vertexNum_-1 |
返回值
- 返回类型:
const Vector2<int16_t>
返回指定顶点的只读副本
| 返回值 | 触发场景 |
|---|---|
| const Vector2 |
指定索引处的顶点坐标 |
Vector2<int16_t>& operator[](uint8_t index)
功能说明
- 获取多边形指定索引处顶点的引用
- index 需小于 MAX_VERTEX_NUM,否则触发断言
- 返回引用可修改对应顶点坐标
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| index | uint8_t | 顶点索引 | 0 ~ MAX_VERTEX_NUM-1 |
返回值
- 返回类型:
Vector2<int16_t>&
返回指定顶点的引用
| 返回值 | 触发场景 |
|---|---|
| Vector2 |
指定索引处的顶点引用 |
operator=
Polygon& operator=(const Rect& rect)
功能说明
- 将矩形赋值给多边形,矩形的四个角按顺时针排列为多边形顶点
- 赋值后顶点数量为 4
- 返回当前对象的引用,支持链式调用
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| rect | const Rect& | 入参只读引用,用于赋值的矩形 | 有效的 Rect 对象 |
返回值
- 返回类型:
Polygon&
返回当前对象的引用
| 返回值 | 触发场景 |
|---|---|
| Polygon& | 赋值后的多边形对象引用 |