TouchVG framework
Public 成员函数 | 静态 Public 成员函数 | Public 属性 | 友元 | 所有成员列表
Matrix2d类 参考

二维齐次变换矩阵类 更多...

#include <mgmat.h>

Public 成员函数

 Matrix2d ()
 构造为单位矩阵 更多...
 
 Matrix2d (const Matrix2d &src)
 拷贝构造函数 更多...
 
 Matrix2d (float _m11, float _m12, float _m21, float _m22, float _dx, float _dy)
 给定元素构造 更多...
 
 Matrix2d (const Vector2d &e0, const Vector2d &e1, const Point2d &origin)
 给定两坐标轴矢量和原点构造 更多...
 
Matrix2d operator* (const Matrix2d &mat) const
 矩阵乘法 更多...
 
Matrix2doperator*= (const Matrix2d &mat)
 矩阵乘法 更多...
 
Matrix2d operator* (float s) const
 矩阵的数乘, 矩阵 * 数 更多...
 
Matrix2doperator*= (float s)
 矩阵的数乘, 矩阵 *= 数 更多...
 
Matrix2d operator/ (float s) const
 矩阵的数乘, 矩阵 / 数 更多...
 
Matrix2doperator/= (float s)
 矩阵的数乘, 矩阵 /= 数 更多...
 
Matrix2dscaleBy (float sx, float sy)
 比例放缩 更多...
 
Matrix2dscaleBy (float s)
 比例放缩、矩阵的数乘 更多...
 
Matrix2dpreMultBy (const Matrix2d &leftSide)
 左乘一个矩阵,leftSide * (*this) 更多...
 
Matrix2dpostMultBy (const Matrix2d &rightSide)
 右乘一个矩阵,(*this) * rightSide 更多...
 
Matrix2dsetToProduct (const Matrix2d &m1, const Matrix2d &m2)
 设置为两个矩阵的乘积 (m1 * m2) 更多...
 
void transformPoints (int count, Point2d *points) const
 对多个点进行矩阵变换 更多...
 
void transformVectors (int count, Vector2d *vectors) const
 对多个矢量进行矩阵变换 更多...
 
float det () const
 行列式值 更多...
 
bool invert ()
 设置为逆矩阵 更多...
 
Matrix2d inverse () const
 返回逆矩阵 更多...
 
bool isInvertible () const
 判断矩阵是否可逆 更多...
 
float scale () const
 比例大小 更多...
 
float scaleX () const
 X比例大小 更多...
 
float scaleY () const
 Y比例大小 更多...
 
float angle () const
 X旋转角度,弧度 更多...
 
bool operator== (const Matrix2d &mat) const
 判断两个矩阵是否相等 更多...
 
bool operator!= (const Matrix2d &mat) const
 判断两个矩阵是否不相等 更多...
 
bool isEqualTo (const Matrix2d &mat, const Tol &tol=Tol::gTol()) const
 用欧拉规则判断两个矩阵是否相等,即判断矩阵的行矢量是否相等 更多...
 
bool isIdentity () const
 判断是否为单位矩阵 更多...
 
bool isOrtho () const
 判断矩阵的坐标轴矢量是否分别水平和垂直 更多...
 
bool hasMirror (Vector2d &reflex) const
 判断矩阵中是否含有对称成分 更多...
 
bool isConformal (float &scaleX, float &scaleY, float &angle, bool &isMirror, Vector2d &reflex) const
 得到比例、旋转、镜像成分 更多...
 
Matrix2dsetCoordSystem (const Vector2d &e0, const Vector2d &e1, const Point2d &origin)
 设置为原点为origin,坐标轴矢量为e0和e1的坐标系 更多...
 
void getCoordSystem (Vector2d &e0, Vector2d &e1, Point2d &origin) const
 得到坐标系的原点origin,坐标轴矢量e0和e1 更多...
 
Matrix2dsetToIdentity ()
 设置为单位矩阵 更多...
 
Matrix2dset (float _m11, float _m12, float _m21, float _m22, float _dx, float _dy)
 设置矩阵元素 更多...
 
Matrix2dsetToTranslation (const Vector2d &vec)
 设置为平移变换矩阵 更多...
 
Matrix2dsetToRotation (float angle, const Point2d &center=Point2d::kOrigin())
 设置为以一点为中心的旋转变换矩阵 更多...
 
Matrix2dsetToScaling (float scale, const Point2d &center=Point2d::kOrigin())
 设置为以一点为中心的放缩变换矩阵 更多...
 
Matrix2dsetToScaling (float scaleX, float scaleY, const Point2d &center=Point2d::kOrigin())
 设置为以一点为中心的放缩变换矩阵 更多...
 
Matrix2dsetToMirroring (const Point2d &pnt=Point2d::kOrigin())
 设置为关于一点对称的变换矩阵 更多...
 
Matrix2dsetToMirroring (const Point2d &pnt, const Vector2d &dir)
 设置为以直线(pnt,dir)为中心线的对称变换矩阵 更多...
 
Matrix2dsetToShearing (float sx, float sy, const Point2d &pnt=Point2d::kOrigin())
 设置为错切变换矩阵 更多...
 

静态 Public 成员函数

static const Matrix2d kIdentity ()
 单位矩阵 更多...
 
static Matrix2d coordSystem (const Vector2d &e0, const Vector2d &e1, const Point2d &origin)
 返回原点为origin,坐标轴矢量为e0和e1的坐标系 更多...
 
static Matrix2d coordSystem (const Point2d &origin, float scaleX, float scaleY=0, float angle=0)
 返回给定原点、比例和旋转角度的坐标系 更多...
 
static Matrix2d translation (const Vector2d &vec)
 得到平移变换矩阵 更多...
 
static Matrix2d rotation (float angle, const Point2d &center=Point2d::kOrigin())
 得到以一点为中心的旋转变换矩阵 更多...
 
static Matrix2d scaling (float scale, const Point2d &center=Point2d::kOrigin())
 得到以一点为中心的放缩变换矩阵 更多...
 
static Matrix2d scaling (float scaleX, float scaleY, const Point2d &center=Point2d::kOrigin())
 得到以一点为中心的放缩变换矩阵 更多...
 
static Matrix2d mirroring (const Point2d &pnt=Point2d::kOrigin())
 得到关于一点对称的变换矩阵 更多...
 
static Matrix2d mirroring (const Point2d &pnt, const Vector2d &dir)
 得到以直线(pnt,dir)为中心线的对称变换矩阵 更多...
 
static Matrix2d shearing (float sx, float sy, const Point2d &pnt=Point2d::kOrigin())
 得到错切变换矩阵 更多...
 
static Matrix2d transformWith2P (const Point2d &from1, const Point2d &from2, const Point2d &to1, const Point2d &to2)
 得到两个点同时移动后形成的变化矩阵 更多...
 

Public 属性

float m11
 矩阵元素,代表X方向线性变换分量 更多...
 
float m12
 矩阵元素,代表X方向线性变换分量 更多...
 
float m21
 矩阵元素,代表Y方向线性变换分量 更多...
 
float m22
 矩阵元素,代表Y方向线性变换分量 更多...
 
float dx
 矩阵元素,代表X方向平移量 更多...
 
float dy
 矩阵元素,代表Y方向平移量 更多...
 

友元

Matrix2d operator* (float s, const Matrix2d &mat)
 矩阵的数乘, 数 * 矩阵 更多...
 

详细描述

二维齐次变换矩阵类

变换矩阵类Matrix用于二维图形的仿射变换。矩阵 M 的形式为:
  e0x e0y 0
  e1x e1y 0
  dx  dy 1
其中矩阵 A:
  e0x e0y
  e1x e1y
称为 M 的线性部分,其作用是对图形进行伸缩、旋转、对称和错切等变换。
行向量 T (dx, dy) 称为 M 的平移部分,其作用是对图形进行平移变换。
Point的点pnt的对应变换点为 P x M,行矢量 P = (pnt.x, pnt.y, 1)
Vector的矢量vec的对应变换矢量为 V x M,M 的平移部分不参与计算。
每个矩阵 M 对应一个坐标系,其坐标原点为(dx, dy),坐标轴为矢量(e0x, e0y)和 (e1x, e1y)。M 为将(0,0)(1,0)(0,1)映射到(dx, dy)(e0x, e0y)(e1x, e1y)的矩阵。


该类的文档由以下文件生成:

通用矢量图形框架, 版权所有 (C) 张云贵 2004-2017,BSD 开源许可证