AT&T Home | AT&T Labs | Research
AT&T Labs, Inc. - Research

The Yoix® Scripting Language

Home | What's New | Grammar | Documentation | Download | License | YChart | YDAT | YWAIT | Byzgraf | FAQs
invertmatrix () typedict.Matrix
 
Returns the inverse of this matrix or NULL if there is no inverse. Multiplying this matrix by its inverse using concatmatrix produces the identity matrix.
 
 Example:   The program,
import yoix.*.*;

Dump(Matrix m) {
    return(strfmt(
        "{%.2f, %.2f, %.2f, %.2f, %.2f, %.2f}",
        m.sx, m.shx, m.tx, m.sy, m.shy, m.ty
    ));
}

final Matrix DEFAULTMATRIX = {
    double sx = 1.5;
    double sy = 2.0;
};

Matrix num = DEFAULTMATRIX.currentmatrix();
Matrix denom = DEFAULTMATRIX.currentmatrix();
Matrix div;

num.scale(2, 4).translate(200, 100).rotate(30);
div = denom.invertmatrix().concatmatrix(num);

printf("        num=%s\n", Dump(num));
printf("      denom=%s\n", Dump(denom));
printf("    inverse=%s\n", Dump(denom.invertmatrix()));
printf("inverse*num=%s\n", Dump(div));
printf("  denom*div=%s\n", Dump(denom.concatmatrix(div)));
prints
        num={2.60, -1.50, 600.00, 6.93, 4.00, 800.00}
      denom={1.50, 0.00, 0.00, 2.00, 0.00, 0.00}
    inverse={0.67, 0.00, 0.00, 0.50, 0.00, 0.00}
inverse*num={1.73, -1.00, 400.00, 3.46, 2.00, 400.00}
  denom*div={2.60, -1.50, 600.00, 6.93, 4.00, 800.00}
on standard output, which shows how invertmatrix can be used to duplicate the behavior of dividematrix.
 
 Return:   Matrix
 
 See Also:   concat, concatmatrix, currentmatrix, dividematrix, dtransform, Graphics, identmatrix, idtransform, initmatrix, itransform, maptopixel, rotate, scale, setmatrix, shear, transform, translate

 

Yoix is a registered trademark of AT&T Inc.