⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.h

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 H
字号:
/************************************************************************ Copyright (C) 2000-2005 Trolltech AS.  All rights reserved.**** This file is part of the Qtopia Environment.** ** This program is free software; you can redistribute it and/or modify it** under the terms of the GNU General Public License as published by the** Free Software Foundation; either version 2 of the License, or (at your** option) any later version.** ** A copy of the GNU GPL license version 2 is included in this package as ** LICENSE.GPL.**** This program is distributed in the hope that it will be useful, but** WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ** See the GNU General Public License for more details.**** In addition, as a special exception Trolltech gives permission to link** the code of this program with Qtopia applications copyrighted, developed** and distributed by Trolltech under the terms of the Qtopia Personal Use** License Agreement. You must comply with the GNU General Public License** in all respects for all of the code used other than the applications** licensed under the Qtopia Personal Use License Agreement. If you modify** this file, you may extend this exception to your version of the file,** but you are not obligated to do so. If you do not wish to do so, delete** this exception statement from your version.** ** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#ifndef MATRIX_H#define MATRIX_H#include <qpoint.h>#include <qrect.h>class Matrix {    friend Matrix operator*( const Matrix&, const Matrix& );public:    Matrix()        : a1( 1 ), a2( 0 ), b1( 0 ), b2( 1 )     { }    Matrix( int w, int x, int y, int z )        : a1( w ), a2( x ), b1( y ), b2( z )    { }        int a() const { return a1; }    int b() const { return a2; }    int c() const { return b1; }    int d() const { return b2; }        void map( int, int, int*, int* ) const;        QPoint map( const QPoint& ) const;        QRect map( const QRect& ) const;        Matrix inverse() const;        bool operator==( const Matrix& ) const;        bool operator!=( const Matrix& ) const;        Matrix& operator*=( const Matrix& );    private:    int a1, a2, b1, b2;};inline Matrix operator*( const Matrix& a, const Matrix& b ){    return Matrix( a.a1 * b.a1 + a.a2 * b.b1,        a.a1 * b.a2 + a.a2 * b.b2,        a.b1 * b.a1 + a.b2 * b.b1,        a.b1 * b.a2 + a.b2 * b.b2 );}inline void Matrix::map( int x, int y, int* xd, int* yd ) const{    *xd = x * a1 + y * b1;    *yd = x * a2 + y * b2;}inline QPoint Matrix::map( const QPoint& p ) const{    return QPoint( p.x() * a1 + p.y() * b1, p.x() * a2 + p.y() * b2 );}inline QRect Matrix::map( const QRect& r ) const{    return QRect( map( r.topLeft() ), map( r.bottomRight() ) );}inline Matrix Matrix::inverse() const{    int det = a1 * b2 - a2 * b1;    if( det ) return Matrix( b2 / det, -a2 / det, -b1 / det, a1 / det );    else return Matrix();}inline bool Matrix::operator==( const Matrix& a ) const{    return a1 == a.a1 && a2 == a.a2 && b1 == a.b1 && b2 == a.b2; }inline bool Matrix::operator!=( const Matrix& a ) const{    return a1 != a.a1 || a2 != a.a2 || b1 != a.b1 || b2 != a.b2; }inline Matrix& Matrix::operator*=( const Matrix& a ){    return *this = *this * a;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -