2012-06-13 82 views

回答

2

代碼:

/*! 
    Flips between right-handed and left-handed coordinate systems 
    by multiplying the y and z co-ordinates by -1. This is normally 
    used to create a left-handed orthographic view without scaling 
    the viewport as ortho() does. 

    \sa ortho() 
*/ 
void QMatrix4x4::flipCoordinates() 
{ 
    if (flagBits == Scale || flagBits == (Scale | Translation)) { 
     m[1][1] = -m[1][1]; 
     m[2][2] = -m[2][2]; 
    } else if (flagBits == Translation) { 
     m[1][1] = -m[1][1]; 
     m[2][2] = -m[2][2]; 
     flagBits |= Scale; 
    } else if (flagBits == Identity) { 
     m[1][1] = -1.0f; 
     m[2][2] = -1.0f; 
     flagBits = Scale; 
    } else { 
     m[1][0] = -m[1][0]; 
     m[1][1] = -m[1][1]; 
     m[1][2] = -m[1][2]; 
     m[1][3] = -m[1][3]; 
     m[2][0] = -m[2][0]; 
     m[2][1] = -m[2][1]; 
     m[2][2] = -m[2][2]; 
     m[2][3] = -m[2][3]; 
     flagBits = General; 
    } 
}