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, List]) -> 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,)

required

Returns:

Type Description
ndarray

numpy.ndarray: State vector in GCRF frame [position (m), velocity (m/s)], shape (6,)

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, List]) -> 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,)

required

Returns:

Type Description
ndarray

numpy.ndarray: Position vector in GCRF frame (m), shape (3,)

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, List]) -> 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,)

required

Returns:

Type Description
ndarray

numpy.ndarray: State vector in EME2000 frame [position (m), velocity (m/s)], shape (6,)

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, List]) -> 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,)

required

Returns:

Type Description
ndarray

numpy.ndarray: Position vector in EME2000 frame (m), shape (3,)

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