Calculate strike of a fault plane from reference vectors and coordinates

32 Views Asked by At

I have a problem similar to Calculate the four corners of a bounded plane given strike, dip, width, height, and center point?, but the answer to that question doesn't really help in my case.

I have a plane, which can have any given orientation in 3D space. This plane is meant to be analogous to a fault plane (please see diagram in linked question above), which can be characterized by the strike and dip angles.

I have two sets of unit vectors: my reference system, composed of the east (E), north (N) and down (D) vectors, (1,0,0), (0,1,0) and (0,0,1) respectively; and three vectors that characterize the plane, V1, V2 and V3, with V1 and V2 being parallel to the plane and V3 being perpendicular to it and pointing down (towards increasing depth values). They are all perpendicular to each other, and V1 and V2 can point in any direction. I also have the coordinates of the four corners of the plane, C1, C2, C3 and C4.

I need to calculate the strike angle of this plane in a way that works for any orientation of the plane and any orientation of the V1/V2 vectors. This angle is defined as the clockwise angle from north to the direction marked by my V1 vector, as long as the plane tilts to the right of an observer standing at the center of the reference system when looking towards that V1 direction from the center of the plane. If the plane was tilting to the left of the observer, then the correct strike angle would be the initial one plus 180 degrees.

I have been trying lots of different things to get this value but they seem to work sometimes but not always, and I can't find a patter of when they work and they don't. The most successful approach I've found so far (works about 60% of the time) uses the sign of the vertical component of DS (DSz), defined as below, to decide whether a correction needs to be applied to the initial strike angle value. If my initial strike value is positive, and DSz>0, no corrections are needed. I only add 360 degrees to initial negative strikes to convert to the 0-360 range in this case. If DSz<0, then I add 180 degrees to initial positive strikes and correct my V1 so it points in the opposite direction.

DS = (N x V3) * (E x V3) (using x to denote the cross product here)

However, this only works in some cases, and fails quite frequently. The attached images should hopefully provide some extra clarity about all these vectors and orientations. The first example shows a case in which my current approach worked, with the plane tilting to the right when looking in the V1 direction. The strike angle in that case is approximately 320 degrees. In the second example, my approach failed, since the plane tilts to the left when looking towards V1 direction. The correct strike in this case should be approximately 150 degrees, but I get 330.

Does anyone have any suggestions on how to correctly calculate this angle for any given orientation of the plane and the V1 vector?

Example 1

Example 2