public void Adjoint() { var result = new Matrix33( M22 * M33 - M23 * M32, M23 * M31 - M21 * M33, M21 * M32 - M22 * M31, M13 * M32 - M12 * M33, M11 * M33 - M13 * M31, M12 * M31 - M11 * M32, M12 * M23 - M13 * M22, M13 * M21 - M11 * M23, M11 * M22 - M12 * M21); AssignFrom(result); }
public void AssignFrom(Matrix33 matrix) { M11 = matrix.M11; M12 = matrix.M12; M13 = matrix.M13; M21 = matrix.M21; M22 = matrix.M22; M23 = matrix.M23; M31 = matrix.M31; M32 = matrix.M32; M33 = matrix.M33; }
public static Matrix33 SquareToQuadrilateral(Point p0, Point p1, Point p2, Point p3) { var dx3 = p0.X - p1.X + p2.X - p3.X; var dy3 = p0.Y - p1.Y + p2.Y - p3.Y; if (dx3 is 0.0 && dy3 is 0.0) { // 这就是普通的仿射变换 Matrix。 var result = new Matrix33( p1.X - p0.X, p2.X - p1.X, p0.X, p1.Y - p0.Y, p2.Y - p1.Y, p0.Y, 0.0f, 0.0f, 1.0f); return(result); }