Exemple #1
0
void Transform::RotateInternal(const Vector3d& internalTheta){
    double theta = norm2(internalTheta);
    if (theta == 0){ return; }
    Vector3d z;
    z = internalTheta / theta;

    Vector3d x;
    Vector3d y;
    if (all_elements(z == Vector3d(0, 0, 1))){
        x = 1, 0, 0;
        y = 0, 1, 0;
}
    else if (all_elements(z == Vector3d(0, 0, -1))){
        x = 1, 0, 0;
        y = 0, -1, 0;
}
    else{
        x = normalize(cross(z));
        y = normalize(cross(z, x));
}

    Matrix33d Mu;
    Mu = x(0), y(0), z(0),
         x(1), y(1), z(1),
         x(2), y(2), z(2);

    Matrix33d Rho;
    Rho = cos(theta), -sin(theta), 0,
          sin(theta),  cos(theta), 0,
                   0,           0, 1;

    m = Matrix33d(m) * Mu * Rho * trans(Mu); 
    RefreshM4();
}
Exemple #2
0
namespace gmtl {
    const Matrix22f MAT_IDENTITY22F = Matrix22f();
    const Matrix22d MAT_IDENTITY22D = Matrix22d();
    const Matrix23f MAT_IDENTITY23F = Matrix23f();
    const Matrix23d MAT_IDENTITY23D = Matrix23d();
    const Matrix33f MAT_IDENTITY33F = Matrix33f();
    const Matrix33d MAT_IDENTITY33D = Matrix33d();
    const Matrix34f MAT_IDENTITY34F = Matrix34f();
    const Matrix34d MAT_IDENTITY34D = Matrix34d();
    const Matrix44f MAT_IDENTITY44F = Matrix44f();
    const Matrix44d MAT_IDENTITY44D = Matrix44d();
}