How to get arbitrarily oblique image from vtkImageData

Very thankful for all your help!
I want to get a 2d image from a 3d vtkImageData. It’s easy to get tangent plane that is paraller to XY(maybe you can use vtkImageViewer2::SetSliceOrientationToXY() ) , but how could I get arbitrarily oblique image from vtkImageData , not paraller to XY , XZ and YZ.
I get some advice to use vtkImageReslice with this function

SetResliceAxes(vtkMatrix4x4 *matrix)

, I know the forth column of maxtrix represents the origin point , but What dose the first three columns of this matrix mean? How could the first three columns represent the plane normals?

I thoughtI should specify a plane by its origin and normal , and get the image cut by this plane (from the vtkImageData) , by some way like this

vtkPlane *plane = new vtkPlane;
plane->SetNormal(XXX) && plane->SetOrigin(XXX)

What’s the relation between the matrix from SetResliceAxes and the Origin&Normal from vtkPlane?

A more specific question , I want to achieve such effect

  1. Set the origin to vtkImageData’s center , and get it’s XY’s , XZ’s , YZ’s tangent plane
  2. Then rotate axis and get new tangent plane.(eg. Rotate X axis Counterclockwise around Z axis , and now you must have a new XZ plane)

If you have a more effiective solution , please tell me
Very thankful!

The first three columns of the matrix specify the row direction, column direction, and slice direction (i.e. slice normal) for the reslicing. So, yes, the 3rd column will be the slice plane normal. The 1st and 2nd column are unit vectors along the edges of the slice plane (imagine the slice plane as a rectangle). Together the 1st, 2nd, and 3rd columns must follow the right-and rule.