I'm doing work with finite element methods and I often do mappings from the reference square $[0,1]^2$ to the physical quadrilateral by a bilinear/trilinear mapping (we'll stick with 2D for now).
Suppose this mapping maps our quadrilateral vertices by
- $(0,0)$ to $(x_1,y_1)$
- $(1,0)$ to $(x_2,y_2)$
- $(0,1)$ to $(x_3,y_3)$
- $(1,1)$ to $(x_4,y_4)$
I worked on my own and found that correct bilinear transformation is $$ \left[\begin{array}{cc} x \\ y \end{array}\right] = \left[\begin{array}{cc} x_1 \\ y_1 \end{array}\right] + \left[\begin{array}{cc} x_2-x_1 \\ y_2-y_1 \end{array}\right] \hat{x} + \left[\begin{array}{cc} x_3-x_1 \\ y_3-y_1 \end{array}\right] \hat{y} + \left[\begin{array}{cc} x_4-x_3-x_2+x_1 \\ y_4-y_3-y_2+y_1 \end{array}\right] \hat{x}\hat{y} $$ However, in most cases, we would like an additional transformation that maps normal vectors on the reference square to normal vectors on the physical quadrilateral. I've read that the correct choice is the Piola transformation which is defined by $$ \vec{n} = \frac{1}{\text{det}J(\hat{x},\hat{y})} J(\hat{x},\hat{y})\hat{\vec{n}} $$ where $J(\hat{x},\hat{y})$ is the jacobian of the bilinear transformation above. Why is this true? What is the proof for this?
I started working on my own by trying to map the vectors $(1,0)^T$ and $(0,1)^T$ to the corresponding normals on the physical cell, but I was already erroneous because I assumed the transform was a constant matrix (which is only valid if we map to rectangle without rotating, but this transform is also automatically diagonal in that case), so I have no clue where this comes from or what the intuition for it should be. Any proofs or links to proofs are greatly appreciated.