跳转至

transform

Class Summary

OHOS::TransformMap

提供矩形的二维/三维变换能力,包括旋转、缩放、平移、剪切及透视变换

自由函数

接口名称 功能简述
OHOS::Rotate 将点/线段/矩形围绕旋转中心旋转指定角度

Functions

自由函数

OHOS::Rotate

void OHOS::Rotate(const Vector2<int16_t>& point, int16_t angle, const Vector2<int16_t>& pivot, Vector2<int16_t>& out)

功能说明

  • 核心用途:将指定点围绕旋转中心旋转指定角度
  • 使用场景:对单个坐标点进行旋转变换
  • 结果通过出参 out 返回旋转后的点坐标

入参

名称 参数类型 详细说明 约束取值范围
point const Vector2\<int16_t>& 待旋转的点坐标,入参只读引用 -
angle int16_t 旋转角度 -
pivot const Vector2\<int16_t>& 旋转中心坐标,入参只读引用 -

出参

名称 数据类型 输出说明
out Vector2\<int16_t>& 旋转后的点坐标,出参引用

OHOS::Rotate

void OHOS::Rotate(const Line& origLine, int16_t angle, const Vector2<int16_t>& pivot, Line& out)

功能说明

  • 核心用途:将线段围绕旋转中心旋转指定角度
  • 使用场景:对线段的两个端点同时进行旋转变换
  • 结果通过出参 out 返回旋转后的线段

入参

名称 参数类型 详细说明 约束取值范围
origLine const Line& 待旋转的线段,入参只读引用 -
angle int16_t 旋转角度 -
pivot const Vector2\<int16_t>& 旋转中心坐标,入参只读引用 -

出参

名称 数据类型 输出说明
out Line& 旋转后的线段,出参引用

OHOS::Rotate

void OHOS::Rotate(const Rect& origRect, int16_t angle, const Vector2<int16_t>& pivot, Polygon& out)

功能说明

  • 核心用途:将矩形围绕旋转中心旋转指定角度
  • 使用场景:对矩形的四个顶点同时进行旋转变换,旋转后矩形退化为四边形多边形
  • 结果通过出参 out 返回旋转后的多边形

入参

名称 参数类型 详细说明 约束取值范围
origRect const Rect& 待旋转的矩形,入参只读引用 -
angle int16_t 旋转角度 -
pivot const Vector2\<int16_t>& 旋转中心坐标,入参只读引用 -

出参

名称 数据类型 输出说明
out Polygon& 旋转后的多边形,出参引用

OHOS::TransformMap

TransformMap

explicit TransformMap(const Rect& rect)

功能说明

  • 核心用途:以指定矩形构造变换映射对象,初始化各变换矩阵为单位矩阵
  • 使用场景:创建绑定特定矩形的变换映射,后续可对其施加旋转、缩放、平移等变换操作
  • 对象构造后即处于可操作状态,可直接调用 Rotate/Scale/Translate 等成员函数

入参

名称 参数类型 详细说明 约束取值范围
rect const Rect& 待变换的矩形,入参只读引用 -

GetClockWise

bool GetClockWise() const

功能说明

  • 核心用途:检查多边形顶点是否按顺时针方向排列
  • 使用场景:判断变换后多边形的绕向,用于面剔除或填充规则判定
  • 该函数为 const 成员函数,不修改对象状态

返回值

  • 返回类型:bool

返回多边形顶点绕向判断结果

返回值 触发场景
true 顶点按顺时针方向排列
false 顶点按逆时针方向排列或顶点数不足

SetPolygon

void SetPolygon(const Polygon& polygon)

功能说明

  • 核心用途:设置矩形变换后的多边形
  • 使用场景:手动指定变换结果多边形,覆盖当前变换计算结果
  • 设置后不影响内部变换矩阵

入参

名称 参数类型 详细说明 约束取值范围
polygon const Polygon& 要设置的多边形,入参只读引用 -

GetPolygon

Polygon GetPolygon() const

功能说明

  • 核心用途:获取矩形变换后得到的多边形
  • 使用场景:获取当前变换结果的多边形表示,用于后续绘制或碰撞检测
  • 该函数为 const 成员函数,不修改对象状态

返回值

  • 返回类型:Polygon

返回变换后的多边形

返回值 触发场景
Polygon 当前变换结果的多边形

GetPivot

const Vector3<float>& GetPivot() const

功能说明

  • 核心用途:获取旋转或缩放操作的旋转中心
  • 使用场景:查询上次 Scale 或 Rotate 操作使用的旋转中心坐标
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Vector3<float>&

返回旋转中心坐标

返回值 触发场景
const Vector3\<float>& 当前旋转中心坐标

GetScaleCoef

const Vector3<float>& GetScaleCoef() const

功能说明

  • 核心用途:获取当前的缩放系数
  • 使用场景:查询上次 Scale 操作设置的 x/y/z 轴缩放比例
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Vector3<float>&

返回缩放系数

返回值 触发场景
const Vector3\<float>& 当前 x/y/z 轴缩放系数

SetTransMapRect

void SetTransMapRect(const Rect& rect)

功能说明

  • 核心用途:设置待变换的矩形
  • 使用场景:更换变换目标矩形,设置后根据当前矩阵状态重新计算变换结果
  • 调用后内部会重新执行变换计算

入参

名称 参数类型 详细说明 约束取值范围
rect const Rect& 新的待变换矩形,入参只读引用 -

GetTransMapRect

const Rect& GetTransMapRect() const

功能说明

  • 核心用途:获取当前待变换的矩形
  • 使用场景:查询当前变换映射绑定的原始矩形
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Rect&

返回当前待变换矩形

返回值 触发场景
const Rect& 当前待变换矩形

SetInvalid

void SetInvalid(bool state)

功能说明

  • 核心用途:设置变换映射的无效状态标记
  • 使用场景:手动标记变换结果为无效,后续 IsInvalid 调用将返回该标记值
  • 该接口直接设置内部状态标记,不触发变换重新计算

入参

名称 参数类型 详细说明 约束取值范围
state bool 无效状态标记 true: 无效; false: 有效

IsInvalid

bool IsInvalid() const

功能说明

  • 核心用途:检查变换映射是否无效,当多边形所有顶点坐标均为 0 或被手动标记为无效时返回 true
  • 使用场景:在绘制前检查变换结果是否有效,避免对无效结果进行渲染
  • 该函数为 const 成员函数,不修改对象状态

返回值

  • 返回类型:bool

返回变换映射有效性判断结果

返回值 触发场景
true 变换映射无效(所有顶点为 0 或被手动标记为无效)
false 变换映射有效

GetBoxRect

Rect GetBoxRect() const

功能说明

  • 核心用途:获取包含多边形的最小外接矩形(AABB)
  • 使用场景:确定变换后多边形的包围盒,用于裁剪判断或重绘区域计算
  • 该函数为 const 成员函数,不修改对象状态

返回值

  • 返回类型:Rect

返回多边形的最小外接矩形

返回值 触发场景
Rect 包含多边形所有顶点的最小外接矩形

GetTransformMatrix

const Matrix4<float>& GetTransformMatrix() const

功能说明

  • 核心用途:获取包含平移偏移的三维齐次变换矩阵
  • 使用场景:获取当前所有变换操作(旋转、缩放、平移、剪切、透视)的合成矩阵
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Matrix4<float>&

返回合成变换矩阵

返回值 触发场景
const Matrix4\<float>& 当前合成变换矩阵(含平移偏移)

GetOrigTransformMatrix

const Matrix4<float>& GetOrigTransformMatrix() const

功能说明

  • 核心用途:获取原始变换矩阵(不含额外平移偏移)
  • 使用场景:获取 SetMatrix 设置的原始矩阵数据
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Matrix4<float>&

返回原始变换矩阵

返回值 触发场景
const Matrix4\<float>& 原始变换矩阵

GetRotateMatrix

const Matrix4<float>& GetRotateMatrix() const

功能说明

  • 核心用途:获取旋转变换矩阵
  • 使用场景:查询当前旋转变换对应的矩阵数据
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Matrix4<float>&

返回旋转变换矩阵

返回值 触发场景
const Matrix4\<float>& 当前旋转变换矩阵

GetScaleMatrix

const Matrix4<float>& GetScaleMatrix() const

功能说明

  • 核心用途:获取缩放变换矩阵
  • 使用场景:查询当前缩放变换对应的矩阵数据
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Matrix4<float>&

返回缩放变换矩阵

返回值 触发场景
const Matrix4\<float>& 当前缩放变换矩阵

GetTranslateMatrix

const Matrix4<float>& GetTranslateMatrix() const

功能说明

  • 核心用途:获取平移变换矩阵
  • 使用场景:查询当前平移变换对应的矩阵数据
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Matrix4<float>&

返回平移变换矩阵

返回值 触发场景
const Matrix4\<float>& 当前平移变换矩阵

GetShearMatrix

const Matrix4<float>& GetShearMatrix() const

功能说明

  • 核心用途:获取剪切变换矩阵
  • 使用场景:查询当前剪切变换对应的矩阵数据
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Matrix4<float>&

返回剪切变换矩阵

返回值 触发场景
const Matrix4\<float>& 当前剪切变换矩阵

GetPerspectiveMatrix

const Matrix4<float>& GetPerspectiveMatrix() const

功能说明

  • 核心用途:获取透视变换矩阵
  • 使用场景:查询当前透视投影变换对应的矩阵数据
  • 返回值为 const 引用,不修改对象状态

返回值

  • 返回类型:const Matrix4<float>&

返回透视变换矩阵

返回值 触发场景
const Matrix4\<float>& 当前透视变换矩阵

GetRotateAngle

int16_t GetRotateAngle() const

功能说明

  • 核心用途:获取当前的旋转角度
  • 使用场景:查询上次 Rotate 操作设置的旋转角度值
  • 该函数为 const 成员函数,不修改对象状态

Kconfig 配置

配置项 说明 默认值
ENABLE_SWEEP_CLOCK 启用时返回类型为 float,未启用时返回类型为 int16_t n

返回值

  • 返回类型:int16_t(ENABLE_SWEEP_CLOCK 未启用时)

返回旋转角度

返回值 触发场景
int16_t 当前旋转角度

GetOrigPoint

Point GetOrigPoint(const Point& point, const Rect& relativeRect)

功能说明

  • 核心用途:根据变换后的点坐标,计算其在原始矩形中的对应点
  • 使用场景:在变换后的图像中点击某点时,反算该点在原始图像中的坐标位置
  • 调用后不修改对象当前状态

入参

名称 参数类型 详细说明 约束取值范围
point const Point& 待反算的点坐标,入参只读引用 -
relativeRect const Rect& 相对偏移矩形,入参只读引用 -

返回值

  • 返回类型:Point

返回原始点坐标

返回值 触发场景
Point 反算得到的原始坐标点

Rotate

void Rotate(int16_t angle, const Vector2<float>& pivot) void Rotate(int16_t angle, const Vector3<float>& rotatePivotStart, const Vector3<float>& rotatePivotEnd)

功能说明

  • 核心用途:围绕指定旋转中心/轴旋转矩形指定角度
  • 使用场景:对矩形进行二维或三维旋转变换;二维版本使用二维旋转中心,三维版本使用由两个三维点确定的旋转轴
  • 调用后内部自动更新变换矩阵和多边形

入参(重载1:二维旋转)

名称 参数类型 详细说明 约束取值范围
angle int16_t 旋转角度 -
pivot const Vector2\<float>& 二维旋转中心,入参只读引用 -

入参(重载2:三维旋转)

名称 参数类型 详细说明 约束取值范围
angle int16_t 旋转角度 -
rotatePivotStart const Vector3\<float>& 旋转轴起始点,入参只读引用 -
rotatePivotEnd const Vector3\<float>& 旋转轴终止点,入参只读引用 -

Kconfig 配置

配置项 说明 默认值
ENABLE_SWEEP_CLOCK 启用时 angle 参数类型为 float n

Scale

void Scale(const Vector2<float>& scale, const Vector2<float>& pivot) void Scale(const Vector3<float>& scale, const Vector3<float>& pivot)

功能说明

  • 核心用途:以指定缩放中心和缩放系数对矩形进行缩放变换
  • 使用场景:对矩形进行二维或三维缩放;二维版本使用 Vector2 指定缩放系数和中心,三维版本使用 Vector3
  • 调用后内部自动更新变换矩阵和多边形

入参(重载1:二维缩放)

名称 参数类型 详细说明 约束取值范围
scale const Vector2\<float>& x/y 轴缩放系数,入参只读引用 -
pivot const Vector2\<float>& 二维缩放中心,入参只读引用 -

入参(重载2:三维缩放)

名称 参数类型 详细说明 约束取值范围
scale const Vector3\<float>& x/y/z 轴缩放系数,入参只读引用 -
pivot const Vector3\<float>& 三维缩放中心,入参只读引用 -

Translate

void Translate(const Vector2<int16_t>& trans) void Translate(const Vector3<int16_t>& trans) void Translate(const Vector2<float>& trans) void Translate(const Vector3<float>& trans)

功能说明

  • 核心用途:以指定偏移量平移矩形
  • 使用场景:对矩形进行平移变换,提供 int16_t 和 float 两种精度的二维/三维偏移量重载
  • 调用后内部自动更新变换矩阵和多边形

入参(重载1:二维整型偏移)

名称 参数类型 详细说明 约束取值范围
trans const Vector2\<int16_t>& 二维整型平移偏移量,入参只读引用 -

入参(重载2:三维整型偏移)

名称 参数类型 详细说明 约束取值范围
trans const Vector3\<int16_t>& 三维整型平移偏移量,入参只读引用 -

入参(重载3:二维浮点偏移)

名称 参数类型 详细说明 约束取值范围
trans const Vector2\<float>& 二维浮点平移偏移量,入参只读引用 -

入参(重载4:三维浮点偏移)

名称 参数类型 详细说明 约束取值范围
trans const Vector3\<float>& 三维浮点平移偏移量,入参只读引用 -

Shear

void Shear(const Vector2<float>& shearX, const Vector2<float>& shearY, const Vector2<float>& shearZ)

功能说明

  • 核心用途:对矩形进行剪切变换
  • 使用场景:对矩形施加沿 x/y/z 方向的剪切变形
  • 调用后内部自动更新变换矩阵和多边形

入参

名称 参数类型 详细说明 约束取值范围
shearX const Vector2\<float>& x 方向剪切参数,入参只读引用 -
shearY const Vector2\<float>& y 方向剪切参数,入参只读引用 -
shearZ const Vector2\<float>& z 方向剪切参数,入参只读引用 -

operator==

bool operator==(const TransformMap& other) const

功能说明

  • 核心用途:判断两个变换映射对象是否相等
  • 使用场景:比较两个 TransformMap 的旋转、平移、缩放矩阵及矩形和合成矩阵是否一致
  • 该函数为 const 成员函数,不修改对象状态

入参

名称 参数类型 详细说明 约束取值范围
other const TransformMap& 待比较的另一个变换映射对象,入参只读引用 -

返回值

  • 返回类型:bool

返回比较结果

返回值 触发场景
true 两个变换映射的旋转、平移、缩放矩阵及矩形和合成矩阵均相等
false 任一矩阵或矩形不相等

SetMatrix

void SetMatrix(const Matrix4<float>& matrix, bool isInternalMatrix = false)

功能说明

  • 核心用途:直接设置变换矩阵,替代通过 Rotate/Scale/Translate 等操作逐步构建的变换
  • 使用场景:需要使用自定义变换矩阵时,可直接设置完整矩阵
  • 设置后根据矩阵重新计算多边形顶点及逆矩阵

入参

名称 参数类型 详细说明 约束取值范围
matrix const Matrix4\<float>& 变换矩阵,入参只读引用 -
isInternalMatrix bool 是否为内部矩阵标记,缺省值为 false true: 内部矩阵; false: 外部矩阵

SetCameraDistance

void SetCameraDistance(int16_t distance)

功能说明

  • 核心用途:设置透视变换的相机距离
  • 使用场景:配置透视投影的观察距离,影响透视效果的强弱
  • 调用后内部自动更新透视矩阵和合成变换矩阵

入参

名称 参数类型 详细说明 约束取值范围
distance int16_t 相机距离 -

SetCameraPosition

void SetCameraPosition(const Vector2<float>& position)

功能说明

  • 核心用途:设置透视变换的相机位置
  • 使用场景:配置透视投影的观察位置,影响透视变换的偏移
  • 调用后内部自动更新透视矩阵和合成变换矩阵

入参

名称 参数类型 详细说明 约束取值范围
position const Vector2\<float>& 相机位置坐标,入参只读引用 -

Is3DTransform

bool Is3DTransform() const

功能说明

  • 核心用途:检查当前变换是否为三维变换
  • 使用场景:判断变换结果是否涉及透视除法(齐次坐标 w 分量不为 1 时为三维变换)
  • 该函数为 const 成员函数,不修改对象状态

返回值

  • 返回类型:bool

返回三维变换判断结果

返回值 触发场景
true 变换涉及三维透视效果(齐次坐标 w 分量不为 1)
false 变换为纯二维变换

Structures

TransformMap

class TransformMap : public HeapBase {
public:
    Matrix3<float> invMatrix_;
};

成员说明

成员名称 数据类型 描述
invMatrix_ Matrix3\<float> 变换矩阵的逆矩阵,用于反向坐标映射