Skip to content

EME2000 ↔ GCRF Transformations

Constant frame bias transformations between Earth Mean Equator and Equinox of J2000.0 (EME2000, classical inertial) and Geocentric Celestial Reference Frame (GCRF, modern inertial).

Note

For conceptual explanations and examples, see EME2000 ↔ GCRF Transformations in the Learn section.

EME2000 to GCRF

state_eme2000_to_gcrf builtin

state_eme2000_to_gcrf(x_eme2000: Union[ndarray, Sequence], axis: int = -1) -> ndarray

Transforms a state vector (position and velocity) from EME2000 (Earth Mean Equator and Equinox of J2000.0) to GCRF (Geocentric Celestial Reference Frame).

Applies the inverse frame bias correction to both position and velocity. Because the transformation does not vary with time, the velocity is directly rotated without additional correction terms.

Parameters:

Name Type Description Default
x_eme2000 ndarray or list

State vector in EME2000 frame [position (m), velocity (m/s)], shape (6,), or a batch of vectors with the 6 components along axis (for example shape (n, 6)).

required
axis int

The axis of x_eme2000 along which the 6 components of a single vector lie; the remaining axes enumerate the batch. For a batch of shape (n, 6) the components lie along the last axis, so the default -1 applies; a (6, n) column layout uses axis=0.

-1

Returns:

Type Description
ndarray

numpy.ndarray: State vector in GCRF frame [position (m), velocity (m/s)], shape (6,) for a single input, or the batch layout of x_eme2000 (shape (n, 6) for a single vector for batched input.

Example
1
2
3
4
5
6
7
8
9
import brahe as bh
import numpy as np

# State vector in EME2000 [x, y, z, vx, vy, vz] (meters, m/s)
state_eme2000 = np.array([bh.R_EARTH + 500e3, 0.0, 0.0, 0.0, 7600.0, 0.0])

# Transform to GCRF
state_gcrf = bh.state_eme2000_to_gcrf(state_eme2000)
print(f"GCRF state: {state_gcrf}")

position_eme2000_to_gcrf builtin

position_eme2000_to_gcrf(x: Union[ndarray, Sequence], axis: int = -1) -> ndarray

Transforms a position vector from EME2000 (Earth Mean Equator and Equinox of J2000.0) to GCRF (Geocentric Celestial Reference Frame).

Applies the inverse frame bias correction to account for the small offset between the J2000.0 mean equator and equinox and GCRF. This is a constant transformation that does not vary with time.

Parameters:

Name Type Description Default
x ndarray or list

Position vector in EME2000 frame (m), shape (3,), or a batch of vectors with the 3 components along axis (for example shape (n, 3)).

required
axis int

The axis of x along which the 3 components of a single vector lie; the remaining axes enumerate the batch. For a batch of shape (n, 3) the components lie along the last axis, so the default -1 applies; a (3, n) column layout uses axis=0.

-1

Returns:

Type Description
ndarray

numpy.ndarray: Position vector in GCRF frame (m), shape (3,) for a single input, or the batch layout of x (shape (n, 3) for a single vector for batched input.

Example
1
2
3
4
5
6
7
8
9
import brahe as bh
import numpy as np

# Position vector in EME2000 (meters)
r_eme2000 = np.array([bh.R_EARTH + 500e3, 0.0, 0.0])

# Transform to GCRF
r_gcrf = bh.position_eme2000_to_gcrf(r_eme2000)
print(f"GCRF position: {r_gcrf}")

rotation_eme2000_to_gcrf builtin

rotation_eme2000_to_gcrf() -> ndarray

Computes the rotation matrix from EME2000 (Earth Mean Equator and Equinox of J2000.0) to GCRF (Geocentric Celestial Reference Frame).

This transformation applies the inverse frame bias correction to account for the difference between EME2000 (J2000.0 mean equator/equinox) and GCRF (ICRS-aligned). The transformation is constant and does not depend on time.

Returns:

Type Description
ndarray

numpy.ndarray: 3x3 rotation matrix transforming EME2000 -> GCRF

Example
1
2
3
4
5
6
import brahe as bh

# Get rotation matrix
R = bh.rotation_eme2000_to_gcrf()
print(f"Rotation matrix shape: {R.shape}")
# Output: Rotation matrix shape: (3, 3)

GCRF to EME2000

state_gcrf_to_eme2000 builtin

state_gcrf_to_eme2000(x_gcrf: Union[ndarray, Sequence], axis: int = -1) -> ndarray

Transforms a state vector (position and velocity) from GCRF (Geocentric Celestial Reference Frame) to EME2000 (Earth Mean Equator and Equinox of J2000.0).

Applies the frame bias correction to both position and velocity. Because the transformation does not vary with time, the velocity is directly rotated without additional correction terms.

Parameters:

Name Type Description Default
x_gcrf ndarray or list

State vector in GCRF frame [position (m), velocity (m/s)], shape (6,), or a batch of vectors with the 6 components along axis (for example shape (n, 6)).

required
axis int

The axis of x_gcrf along which the 6 components of a single vector lie; the remaining axes enumerate the batch. For a batch of shape (n, 6) the components lie along the last axis, so the default -1 applies; a (6, n) column layout uses axis=0.

-1

Returns:

Type Description
ndarray

numpy.ndarray: State vector in EME2000 frame [position (m), velocity (m/s)], shape (6,) for a single input, or the batch layout of x_gcrf (shape (n, 6) for a single vector for batched input.

Example
1
2
3
4
5
6
7
8
9
import brahe as bh
import numpy as np

# State vector in GCRF [x, y, z, vx, vy, vz] (meters, m/s)
state_gcrf = np.array([bh.R_EARTH + 500e3, 0.0, 0.0, 0.0, 7600.0, 0.0])

# Transform to EME2000
state_eme2000 = bh.state_gcrf_to_eme2000(state_gcrf)
print(f"EME2000 state: {state_eme2000}")

position_gcrf_to_eme2000 builtin

position_gcrf_to_eme2000(x: Union[ndarray, Sequence], axis: int = -1) -> ndarray

Transforms a position vector from GCRF (Geocentric Celestial Reference Frame) to EME2000 (Earth Mean Equator and Equinox of J2000.0).

Applies the frame bias correction to account for the small offset between GCRF and the J2000.0 mean equator and equinox. This is a constant transformation that does not vary with time.

Parameters:

Name Type Description Default
x ndarray or list

Position vector in GCRF frame (m), shape (3,), or a batch of vectors with the 3 components along axis (for example shape (n, 3)).

required
axis int

The axis of x along which the 3 components of a single vector lie; the remaining axes enumerate the batch. For a batch of shape (n, 3) the components lie along the last axis, so the default -1 applies; a (3, n) column layout uses axis=0.

-1

Returns:

Type Description
ndarray

numpy.ndarray: Position vector in EME2000 frame (m), shape (3,) for a single input, or the batch layout of x (shape (n, 3) for a single vector for batched input.

Example
1
2
3
4
5
6
7
8
9
import brahe as bh
import numpy as np

# Position vector in GCRF (meters)
r_gcrf = np.array([bh.R_EARTH + 500e3, 0.0, 0.0])

# Transform to EME2000
r_eme2000 = bh.position_gcrf_to_eme2000(r_gcrf)
print(f"EME2000 position: {r_eme2000}")

rotation_gcrf_to_eme2000 builtin

rotation_gcrf_to_eme2000() -> ndarray

Computes the rotation matrix from GCRF (Geocentric Celestial Reference Frame) to EME2000 (Earth Mean Equator and Equinox of J2000.0).

This transformation applies the frame bias correction to account for the difference between GCRF (ICRS-aligned) and EME2000 (J2000.0 mean equator/equinox). The transformation is constant and does not depend on time.

Returns:

Type Description
ndarray

numpy.ndarray: 3x3 rotation matrix transforming GCRF -> EME2000

Example
1
2
3
4
5
6
7
import brahe as bh
import numpy as np

# Get rotation matrix
R = bh.rotation_gcrf_to_eme2000()
print(f"Rotation matrix shape: {R.shape}")
# Output: Rotation matrix shape: (3, 3)

Frame Bias Matrix

bias_eme2000 builtin

bias_eme2000() -> ndarray

Computes the frame bias matrix transforming GCRF (Geocentric Celestial Reference Frame) to EME2000 (Earth Mean Equator and Equinox of J2000.0).

The bias matrix accounts for the small offset between the GCRF and the J2000.0 mean equator and equinox due to the difference in their definitions. This is a constant transformation that does not vary with time.

Returns:

Type Description
ndarray

numpy.ndarray: 3x3 rotation matrix transforming GCRF -> EME2000

Example
1
2
3
4
5
6
import brahe as bh

# Get the bias matrix
B = bh.bias_eme2000()
print(f"Bias matrix shape: {B.shape}")
# Output: Bias matrix shape: (3, 3)

See Also