R: Get seismic rotation matrix

grotseis {RSEIS} | R Documentation

## Get seismic rotation matrix

### Description

Set up a rotation matrix for a seismic trace. Rotation matrix is 3D, although this rotation only creates a rotation for conversion to radial-transverse orientation.

### Usage

    grotseis(ang, flip = FALSE)

### Arguments

`ang` | Angle to rotate horizontal components, degrees
`flip` | Logical, TRUE=flip the vertical axis, default=FALSE

### Details

Returns a 3 by 3 matrix used for rotationg a 3-component seismic record, usually stored as an N by 3 matrix. Only the N-E components are rotated, North component is assumed to be in position 2 and the east compnent is assumed to be in position 3. The vertical component can be flipped.

If Back-Azimuth is used, radial is directed towards the source. If azimuth is used, radial is directed away from the source.

### Value

3 by 3 rotation matrix.

### Note

Positive radial is away from the source (direction of wave propagation). Positive transverse is to the right when facing the direction of wave propagation.

### Author(s)

Jonathan M. Lees<jonathan.lees@unc.edu>

### See Also

rdistaz

### Examples

    ####  simple case:

    vecs  <- rbind(c(0,0,1), c(0,1,0))
    rbaz <- grotseis(21.76, flip=FALSE)
    bvec  <- vecs %*%  rbaz

    plot(c(-2,2) , c(-2,2) , asp=1, xaxs="r"  , yaxs="r" , type='n' )

      arrows(0, 0, 0+bvec[,2], 0+bvec[,3],
         col=c("red", "blue"), length=.08)

      arrows(0, 0, vecs[,2], vecs[,3],
         col=c("red", "blue"), length=.08, lty=2)

    text(0+bvec[1,2], 0+bvec[1,3], labels='radial', pos=3)
    text(0+bvec[2,2], 0+bvec[2,3], labels='transverse', pos=4)

    text(0+vecs[1,2], 0+vecs[1,3], labels='North', pos=3)
    text(0+vecs[2,2], 0+vecs[2,3], labels='East', pos=4)

    ####  realistic case:
    STAXY<-list()

    STAXY$'x'<-c(-2.9162198461534,-2.49599248511068,
    -2.85909405321704,-1.96135073099434,
    -6.50413342506259,2.64026676599765,
    -3.95701139503518,-2.84082134537436,
    -0.0457817300378462,-2.74214190991955)
    STAXY$'y'<-c(-7.83435541676815,-4.46180337254565,
    -6.46036190991833,-5.01212763828746,
    -2.56091416028758,
    5.31173503708142,2.10545324503380,-0.87490923667824,
    -0.172422188354707,-1.52055218789877)

    STAXY$'lat'<-c(14.685621984127,14.7159182222222,
    14.6979647030651,14.710975070028,
    14.7329873333333,14.8037143111518
    ,14.7749104943935,14.7481391460905,
    14.7544511215933,14.7423394025875)

    STAXY$'lon'<-c(268.420918730159,268.424817925926,
    268.421447725096,268.429783940243,268.387586722222,
    268.472531954619,268.41123843527,268.421611351166,
    268.447574716981,268.422528671994)

    STAXY$'z'<-c(0.92522857142857,1.48225333333333,
    1.14740517241379,1.4423781512605,1.51148,
    2.53268681318681,2.70014678899083,2.04094444444444,
    2.90827547169811,2.31817123287671)

    STAXY$'cen'<-c(14.756,-91.552)

    STAXY$name<-c('OBS','CAR','MAR','CAS','MTB','STA','STE','MOT','SUM','DOM')
    sguitoXY<-list()
    sguitoXY$'x'<-c(-1.78551922571555)
    sguitoXY$'y'<-c(-1.80850340813817)
    sguitoXY$'lat'<-c(14.7397535236)
    sguitoXY$'lon'<-c(268.4314147874)
    sguitoXY$'z'<-c(2.501)

    DAZ <- rdistaz( sguitoXY$lat, sguitoXY$lon ,       STAXY$lat, STAXY$lon)

    STAXY$az <- DAZ$baz

    ####  plotting
    plot(STAXY$x, STAXY$y, asp=1, xaxs="r"  , yaxs="r" )
    text(STAXY$x, STAXY$y,STAXY$name, pos=3)
    points(0,0, pch=3)
    points(sguitoXY$x,sguitoXY$y , pch=8)
    segments(sguitoXY$x, sguitoXY$y, STAXY$x, STAXY$y, col="green", lty=2)

    #### be aware of the convention used: (V-N-E) or (V-E-N)
    ### here first vector is east, second vector is north
    ###       if you use the V-N-E convention
    vecs  <- rbind( c(0,1,0), c(0,0,1))

    for( i in 1:length(STAXY$x))
      {
    rbaz <- grotseis(STAXY$az[i], flip=FALSE)
    bvec  <- vecs %*%  rbaz
    ##############   red is north, blue east
    ########         red is radial positive away or toward  source, blue is transverse
    ##########       blue is positive rotated to the right of red
    ##
    arrows(STAXY$x[i],STAXY$y[i], STAXY$x[i]+bvec[,2], STAXY$y[i]+bvec[,3],
    col=c("red", "blue"), length=.08)

    }

[Package RSEIS version 3.7-4 Index]