rotation

package
v0.0.0-...-26dca7e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 29, 2024 License: BSD-2-Clause Imports: 11 Imported by: 0

Documentation

Overview

Package rotation implements a plate tectonic rotation model.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Inverse

func Inverse(r r3.Rotation) r3.Rotation

Inverse returns the inverse of a rotation.

func Rotate

func Rotate(r r3.Rotation, lat, lon float64) r3.Vec

Rotate returns a vector from a given coordinate rotated using the indicated rotation.

Types

type Euler

type Euler struct {
	T     int64       // starting time for the rotation (in years)
	E     earth.Point // Euler pole
	Angle float64     // angle of the rotation in radians
	Fix   int         // ID of the fixed plate
}

Euler is a rotation of a moving plate relative to a fixed plate.

type Rotation

type Rotation struct {
	// contains filtered or unexported fields
}

A Rotation is a rotation model.

func Read

func Read(r io.Reader) (Rotation, error)

Read decodes a rotation file to produce a set of plates each one with its set of rotations.

The rotation file uses the same format used in GPlates software that are the standard files for tectonic rotations. In a rotation file, each column is separated by one or more spaces and each row represent an Euler rotation angle. Fields are:

  • The first column is the ID of the moving plate.
  • The second column is the the most recent time, in million years.
  • The third column is the latitude of the Euler pole.
  • The fourth column is the longitude of the Euler pole.
  • The fifth column is the angle of the rotation in degrees.
  • The sixth column is the fixed plate.
  • Any additional columns are taken as commentaries.

Here is an example of a rotation file:

1 0.0 90.0 0.0 0.0 0
1 37.0 68.0 129.9   7.8 0
1 48.0 50.8 142.8   9.8 0
1 53.0 40.0 145.0  11.4 0
1 83.0 70.5 150.1  20.3 0
2  0.0  0.0   0.0   0.0 1
2 37.0 70.5 -18.7 -10.4 1
2 66.0 80.8  -8.6 -22.5 1
2 71.0 80.4 -12.5 -23.9 1

Because old programs use plate ID 999 as comment, that plate ID will be ignored. Plate ID 0 is interpreted as the Earth rotation axis.

It is important to remember that the rotation file is a file with total rotations because each rotation is anchored in the present day.

func (Rotation) Euler

func (r Rotation) Euler(plate int) []Euler

Euler returns the list of Euler rotations for a given plate.

func (Rotation) Plates

func (r Rotation) Plates() []int

Plates return the plates defined for a rotation model.

func (Rotation) Rotation

func (r Rotation) Rotation(plate int, t int64) (r3.Rotation, bool)

Rotation returns a total rotation (i.e. a rotation from current time) for a plate at a particular time (in years). It returns false if there are no rotation defined at the indicated time.

The rotations produced by this function are based on the descriptions in Cox. A, Hart R.B. 1986. Plate tectonics: How it works. Blackwell, Palo Alto (USA), in particular chapter 7, but using quaternions instead of rotation matrices.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL