public static capex.util.Vector2 multiplyVector(capex.util.Matrix33 a, capex.util.Vector2 b) { var x = a.v[0] * b.x + a.v[1] * b.y + a.v[2] * 1.00; var y = a.v[3] * b.x + a.v[4] * b.y + a.v[5] * 1.00; return(capex.util.Vector2.create(x, y)); }
public static capex.util.Matrix33 multiplyMatrix(capex.util.Matrix33 a, capex.util.Matrix33 b) { var matrix33 = new capex.util.Matrix33(); matrix33.v[0] = a.v[0] * b.v[0] + a.v[1] * b.v[3] + a.v[2] * b.v[6]; matrix33.v[1] = a.v[0] * b.v[1] + a.v[1] * b.v[4] + a.v[2] * b.v[7]; matrix33.v[2] = a.v[0] * b.v[2] + a.v[1] * b.v[5] + a.v[2] * b.v[8]; matrix33.v[3] = a.v[3] * b.v[0] + a.v[4] * b.v[3] + a.v[5] * b.v[6]; matrix33.v[4] = a.v[3] * b.v[1] + a.v[4] * b.v[4] + a.v[5] * b.v[7]; matrix33.v[5] = a.v[3] * b.v[2] + a.v[4] * b.v[5] + a.v[5] * b.v[8]; matrix33.v[6] = a.v[6] * b.v[0] + a.v[7] * b.v[3] + a.v[8] * b.v[6]; matrix33.v[7] = a.v[6] * b.v[1] + a.v[7] * b.v[4] + a.v[8] * b.v[7]; matrix33.v[8] = a.v[6] * b.v[2] + a.v[7] * b.v[5] + a.v[8] * b.v[8]; return(matrix33); }
public static capex.util.Matrix33 multiplyScalar(double v, capex.util.Matrix33 mm) { var mat33 = capex.util.Matrix33.forZero(); mat33.v[0] = mm.v[0] * v; mat33.v[1] = mm.v[1] * v; mat33.v[2] = mm.v[2] * v; mat33.v[3] = mm.v[3] * v; mat33.v[4] = mm.v[4] * v; mat33.v[5] = mm.v[5] * v; mat33.v[6] = mm.v[6] * v; mat33.v[7] = mm.v[7] * v; mat33.v[8] = mm.v[8] * v; return(mat33); }
public static capex.util.Matrix33 invertMatrix(capex.util.Matrix33 m) { var d = m.v[0] * m.v[4] * m.v[8] + m.v[3] * m.v[7] * m.v[2] + m.v[6] * m.v[1] * m.v[5] - m.v[0] * m.v[7] * m.v[5] - m.v[3] * m.v[1] * m.v[8] - m.v[6] * m.v[4] * m.v[2]; var v = new capex.util.Matrix33(); v.v[0] = (m.v[4] * m.v[8] - m.v[7] * m.v[5]) / d; v.v[3] = (m.v[6] * m.v[5] - m.v[3] * m.v[8]) / d; v.v[6] = (m.v[3] * m.v[7] - m.v[6] * m.v[4]) / d; v.v[1] = (m.v[7] * m.v[2] - m.v[1] * m.v[8]) / d; v.v[4] = (m.v[0] * m.v[8] - m.v[6] * m.v[2]) / d; v.v[7] = (m.v[6] * m.v[1] - m.v[0] * m.v[7]) / d; v.v[2] = (m.v[1] * m.v[5] - m.v[4] * m.v[2]) / d; v.v[5] = (m.v[3] * m.v[2] - m.v[0] * m.v[5]) / d; v.v[8] = (m.v[0] * m.v[4] - m.v[3] * m.v[1]) / d; return(v); }
public static capex.util.Matrix33 forValues(double[] mv) { var v = new capex.util.Matrix33(); var i = 0; for (i = 0; i < 9; i++) { if (i >= mv.Length) { v.v[i] = 0.00; } else { v.v[i] = mv[i]; } } return(v); }
public static void untransformCoords(capex.util.Matrix33 m, int ix, int iy, double[] tu, double[] tv, double[] tw) { var x = (double)(ix + 0.50); var y = (double)(iy + 0.50); tu[0] = m.v[0] * (x + 0) + m.v[3] * (y + 0) + m.v[6]; tv[0] = m.v[1] * (x + 0) + m.v[4] * (y + 0) + m.v[7]; tw[0] = m.v[2] * (x + 0) + m.v[5] * (y + 0) + m.v[8]; tu[1] = m.v[0] * (x - 1) + m.v[3] * (y + 0) + m.v[6]; tv[1] = m.v[1] * (x - 1) + m.v[4] * (y + 0) + m.v[7]; tw[1] = m.v[2] * (x - 1) + m.v[5] * (y + 0) + m.v[8]; tu[2] = m.v[0] * (x + 0) + m.v[3] * (y - 1) + m.v[6]; tv[2] = m.v[1] * (x + 0) + m.v[4] * (y - 1) + m.v[7]; tw[2] = m.v[2] * (x + 0) + m.v[5] * (y - 1) + m.v[8]; tu[3] = m.v[0] * (x + 1) + m.v[3] * (y + 0) + m.v[6]; tv[3] = m.v[1] * (x + 1) + m.v[4] * (y + 0) + m.v[7]; tw[3] = m.v[2] * (x + 1) + m.v[5] * (y + 0) + m.v[8]; tu[4] = m.v[0] * (x + 0) + m.v[3] * (y + 1) + m.v[6]; tv[4] = m.v[1] * (x + 0) + m.v[4] * (y + 1) + m.v[7]; tw[4] = m.v[2] * (x + 0) + m.v[5] * (y + 1) + m.v[8]; }