Viewport transformation

We are developing a GH plugin called Sandworm (https://github.com/mariuszhermansdorfer/SandWorm). It enables a sand surface to be recorded by a Kinect scanner, handled in Rhino/GH and augmented back onto the sand by a projector.
One emerging problem is that the scale directly under the projector and at the periphery of the box obviously differ. The lower the projector and the wider the box, the worse. Accordingly the projection of the model onto the sand cannot be made accurately by means of simple, affine, 1st order transformation (shift/scale/rotate).
Question 1: Can a higher order transformation (higher that 1st order, that is) be applied directly to a viewport? Apparently, there is a gettransformation method on the viewport object, but a settransformation is apparently missing. Is that observation correct? And, in that case, why? Are there any alternatives?
Question 2) Can the setprojection method (of the viewport object) be used for the purpose? In that case, how can the transformation-matrix be applied?
We have created a workaround by warping the mesh constructed from the point cloud by the Box Morph component before projecting. It works fairly well, but appears to be a rather long and computationally expensive, shot.
Question 3) Can the transformation generated by the Box Morph components be set to higher order transformation (higher that 1st order, that is) – to enable different scaling parameters at different location and, can the transformation matrix be harvested from the tool (or do we have to code that bit of it ourselves). Links to ready-to-apply code (C# or Python) taking tow lists of points as input) will be appreciated.
Other comments and suggestions will of course be appreciated.
Cheers
Hans