import numpy as np
from .util import Util
[docs]
class Asteroid(object):
"""
Class to manipulate asteroid properties.
"""
# Constants for diameter-Hmag conversion
C_std = 1329
a_std = 0.15
[docs]
@staticmethod
def diameter_to_hmag(diameter, albedo=a_std):
"""
Convert diameter to absolute magnitude.
Parameters
----------
diameter : float or array
Diameter in km.
albedo : float, optional
Albedo (default 0.15).
Returns
-------
H : float or array
Absolute magnitude.
Notes
-----
The formula used for conversion is:
$$
D = \\frac{C}{\\sqrt{p_v}} 10^{-H/5}
$$
where $D$ is diameter in km, $p_v$ is albedo, and $H$ is absolute magnitude.
The constant $C = 1329$ km.
We can invert this to get $H$:
$$
H = -5 \\log_{10} \\left( \\frac{D \\sqrt{p_v}}{C} \\right)
$$
Examples
--------
>>> D = 1.0
>>> Asteroid.diameter_to_hmag(D)
17.7...
Attr. [HC]
"""
return -5 * np.log10(diameter * np.sqrt(albedo) / Asteroid.C_std)
[docs]
@staticmethod
def hmag_to_diameter(H, albedo=a_std):
"""
Convert absolute magnitude to diameter.
Parameters
----------
H : float or array
Absolute magnitude.
albedo : float, optional
Albedo (default 0.15).
Returns
-------
diameter : float or array
Diameter in km.
Notes
-----
The formula used for conversion is:
$$
D = \\frac{C}{\\sqrt{p_v}} 10^{-H/5}
$$
where $D$ is diameter in km, $p_v$ is albedo, and $H$ is absolute magnitude.
The constant $C = 1329$ km.
Examples
--------
>>> H = 18.0
>>> Asteroid.hmag_to_diameter(H)
0.89...
Attr. [HC]
"""
return (Asteroid.C_std / np.sqrt(albedo)) * 10**(-H / 5)