2.2.3.9.58 matrixbase::Rotate

Description

Rotates the matrix counter-clockwize by the specified angle.

Syntax

BOOL Rotate( int nAngleDegree = 90 )

Parameters

nAngleDegree
[input] The rotation angle in degrees, can be negative but must be a multiple
of 90 otherwise the closest multiple is used

Return

Returns TRUE on success or FALSE on failure.

Examples

EX1

void matrixbase_Rotate_ex1()
{
    BOOL rc;

    matrix<double> mat1 = {
        {1,  2,  3,  4},
        {2,  4,  6,  8},
        {3,  6,  9, 12}
    };
    MatrixPage MatPg1;
    MatPg1.Create("Origin");
    MatrixLayer MatLy1 = MatPg1.Layers(0);
    Matrix Mat1(MatLy1);
    Mat1 = mat1;
    printf("  The original matrix is %s.\n",Mat1.GetName());
    
    matrix mat2(mat1);  // Create mat2, and copy mat1 to mat2
    rc=mat2.Rotate(90); // Demonstrate  Rotate +90 degree
    // Result matrix:
    //    {4,  8,  12},
    //    {3,  6,   9},
    //    {2,  4,   6},
    //    {1,  2,   3}
        
    if(!rc) printf("Error: Rotate(90) on a matrix failed.\n");
    else
    {
        MatrixPage MatPg2;
        MatPg2.Create("Origin");
        MatrixLayer MatLy2 = MatPg2.Layers(0);
        Matrix Mat2(MatLy2);
        Mat2 = mat2;
        printf("  Observe the 90degree-rotated (counter-clockwize) matrix in %s.\n",
          Mat2.GetName());
    }

    matrix mat3(mat1);  // Create mat3, and copy mat1 to mat3
    rc=mat3.Rotate(-90); // Demonstrate Rotate -90 degree
    // Result matrix:
    //    { 3,  2,  1},
    //    { 6,  3,  2},
    //    { 9,  6,  3},
    //    {12,  8,  4}
    
    if(!rc) printf("Error: Rotate(-90) on a matrix failed.\n");
    else
    {
        MatrixPage MatPg3;
        MatPg3.Create("Origin");
        MatrixLayer MatLy3 = MatPg3.Layers(0);
        Matrix Mat3(MatLy3);
        Mat3 = mat3;
        printf("  Observe the -90degree-rotated (clockwize) matrix in %s.\n",
          Mat3.GetName());
    }


}

Remark

Rotates the matrix counter-clockwize by the specified angle. Angles must be multiples of 90 degrees but can be negative. Rotating a matrix by 90 degrees has the simultaneous effect of making the first row become the first column in reverse order, and the last column becomes the first row. By -90 degrees, the last row becomes the first column, and the first column becomes the first row in reverse order.

See Also

matrixbase::FlipHorizontal, matrixbase::FlipVertical, matrixbase::Reorder, matrixbase::Transpose

Header to Include

origin.h