Coordinate Changes And Rock Deformation

Linear Algebra, Math 232, Carleton College, Winter 2009, Prof. Joshua R. Davis

Utility Functions And Graphics Primitives

Just enter this block of commands and go on to the next section. (These commands define a general user interface for deforming stuff in 2D or 3D. They also define some basic shapes to deform.)

deformedPoints[points_, matrix_] := points.Transpose[matrix];
deformer[axes_, curvesToDeform_, pointsToDeform_, matrix_] := 
 Manipulate[
If[Length[matrix] == 2, Graphics, Graphics3D][{
Line[axes],
PointSize[Large],
Point[Map[Function[point, deformedPoints[point, matrix]], pointsToDeform]],
AbsoluteThickness[2],
Line[Map[Function[curve, deformedPoints[curve, matrix]], curvesToDeform]]}],
{t, 0, 1}];

circlePoints[{a_, b_}, r_, n_] := Table[{r Cos[t] + a, r Sin[t] + b}, {t, 0, 2 Pi, 2 Pi / n}];
circle2D = circlePoints[{0, 0}, 1, 100];
box2D = {{{1, 1}, {-1, 1}, {-1, -1}, {1, -1}, {1, 1}}, {{1, 0}, {0, 0}}, {{0, 1}, {0, 0}}};
rock2D = Append[box2D, circle2D];
axes2D[b_] :=  Join[
{{{b, 0}, {-b, 0}}, {{0, b}, {0, -b}}}, 
Table[{{k, 0.1}, {k, -0.1}}, {k, -b, b, 1}], 
Table[{{0.1, k}, {-0.1, k}}, {k, -b, b, 1}]];
axes3D[b_] := Join[{{{b, 0, 0}, {-b, 0, 0}}, {{0, b, 0}, {0, -b, 0}}, {{0, 0, b}, {0, 0, -b}}}, Table[{{k, 0.1, 0}, {k, -0.1, 0}}, {k, -b, b, 1}], Table[{{0.1, k, 0}, {-0.1, k, 0}}, {k, -b, b, 1}]];
box3D = {{{1,1,1},{1,1,-1}},{{1,1,1},{1,-1,1}},{{1,-1,1},{1,-1,-1}},{{1,-1,-1},{1,1,-1}},{{1,1,1},{-1,1,1}},{{-1,-1,-1},{-1,-1,1}},{{-1,-1,-1},{-1,1,-1}},{{-1,-1,-1},{1,-1,-1}},{{-1,-1,1},{-1,1,1}},{{-1,-1,1},{1,-1,1}}, {{-1, 1, 1}, {-1, 1, -1}}, {{-1, 1, -1}, {1, 1, -1}}};

2D Deformations

In the animation below, imagine that the positive x-axis points east and the positive y-axis points north. The x-axis is then a west-to-east line. Imagine that this line is a fault between two blocks of rock, with the southern block moving west and the northern block moving east. A rock positioned along the fault will be dragged westward along its southern edge and eastward along its northern edge; it will be sheared (by a "simple shear", in the terminology of structural geology).

g = 1;
matrix2D = {{1, g}, {0, 1}};
MatrixForm[matrix2D]
deformer[axes2D[g + 2], rock2D, {}, MatrixPower[matrix2D, t]]

This kind of shearing arises along the San Andreas fault system in California, where the North American and Pacific plates slide past one another. There, however, the fault runs (roughly) northwest-to-southeast. The Pacific plate slides northwest relative to the North American plate; equivalently, the North American plate slides southeast relative to the Pacific plate. We can build a model for simple shear along this fault using the west-to-east model above and a simple coordinate change, as follows.

The key is to compare how the northwest-to-southeast fault acts on vectors to how the west-to-east fault acts on vectors. For example, the (cos(3 pi / 4), sin(3 pi / 4)) is the unit vector pointing northwest. This vector lies along the fault, and hence should be unmoved by the shearing, just as (1, 0) is unmoved by shearing along the west-to-east fault. Similarly, the unit vector (-sin(3 pi / 4), cos(3 pi / 4)) points southwest, perpendicular to the fault. This vector should be moved in a manner analogous to how (1, 0) is moved along the west-east fault.

We want our deformation to behave like the {{1, 1}, {0, 1}} matrix with respect to this strange basis. So we declare it in this basis, and then use the change-of-basis formula for linear transformations to determine its coordinates with respect to the standard basis.

change2D = {{Cos[3 Pi / 4], -Sin[3 Pi / 4]}, {Sin[3 Pi / 4], Cos[3 Pi / 4]}};
MatrixForm[change2D]
newMatrix2D = change2D.matrix2D.Inverse[change2D];
MatrixForm[newMatrix2D]
deformer[axes2D[g + 2], rock2D, {}, MatrixPower[newMatrix2D, t]]

As you can see, the box is now getting sheared in a northwest-to-southeast fashion. Or maybe it's a little difficult to see, because the edges of the box are not aligned with the fault. The following animation shows the same deformation, but applied to a fault-aligned rock.

newRock2D = Map[Function[points, deformedPoints[points, change2D]], rock2D];
deformer[axes2D[g + 2], newRock2D, {}, MatrixPower[newMatrix2D, t]]

3D Deformations

The preceding section treated simple shear in two dimensions. The following animation shows 3D simple shear. Remember that you can drag the 3D image with your mouse to rotate it.

g = 1;
matrix3D = {{1, g, 0}, {0, 1, 0}, {0, 0, 1}};
MatrixForm[matrix3D]
deformer[axes3D[g + 2], box3D, {}, MatrixPower[matrix3D, t]]

Assume once again that the positive x-axis points east and the positive y-axis points north. Furthermore, assume that the positive z-axis points up, out of the ground. Mimicking the example above, define a 3D coordinate change matrix and use it to construct a 3D simple shear along the northwest-to-southeast San Andreas fault.

Epilogue

Coordinate change is not just a fun topic for math enthusiasts; it is crucial to how scientific models are developed and applied. For the natural universe does not come with a standard choice of coordinates. A scientist must pick one that suits the requirements of the problem at hand. In a complicated problem, it may even be true that one part of the problem is most easily described in one set of coordinates and another part in another set of coordinates. So it's important to be able to move between coordinate systems as needed.