跳转至

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) constVector2<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& 赋值后的多边形对象引用