Accesible at https://luisfe-suarez.github.io/ExoplanetVisualizer/
Visualization tool of Transit Method, a common method for Exoplanet discovert. The simulation models the change in brigthness of a star over time, as an orbiting planet passes in front of it.
The transit method detects exoplanets by observing periodic dips in the brightness of a star. These dips occur when a planet passes (“transits”) in front of its host star, blocking a small fraction of the starlight. Similar to the decrease in brightness of a light bulb when an object covers it
For a transit to occur:
There are many factors that influence the dip in brightness and our ability to detect the exoplanet.
Period: Planets with a smaller orbit (semi-major axis) have smaller periods, transiting in front of the star in less time, making it more likely for an observer to see the dip in brightness during limited observation time.
Size: Planets which are bigger than its host star will cover more light from an observer perspective (like blocking the sunlight with our thumb versus using our whole hand). This makes the dip in brightness more evident and light curves with more prominent curves.
Multiple objects in orbit: It could be the case that multiple objects are orbiting the same star, with overlapping transits in front of the star. When this is the case,
This project simplifies the transit detection problem using basic orbital mechanics and geometry.
I decided to assume a circular orbit (look at pylightcurve repo for more detailed orbits) and calculate the planet’s position using:
ω = 2π / P (angular velocity)
θ = ω × t (orbital angle)
x = a × cos(θ) (x-axis position)
y = a × sin(θ) (y-axis position)
Where:
P: Orbital period (in days)a: Semi-major axis (in AU)t: Time (in days)θ: Orbital angle (in radians)A transit is assumed to occur when the planet is between 80° and 100° in orbital angle (i.e., near the line of sight). The decision to include a treshold is to simplify possible mathematical errors and to more easily update the curve in real time.
Transit occurs if |θ(deg) − 90°| < transit window
When a transit occurs, I model the star’s brightness drop based on the relative sizes of the planet and star. Normal m:
Transit Depth = (Rp / Rs)^2
Where:
Rp: Planet radiusRs: Star radiusI ran into some errors due to scaling of the planets and the actual dip in flux so I decided to use cosine interpolation to give more of a “u-shaped” curve instead of a sharp decrease that produced a “v-shaped” curve.
Flux = 1 − Transit Depth × (cos(π × n) + 1) / 2
Where n is the normalized distance from the transit center (n = 0 at center, n = 1 at edges).
As I mentioned before, the light curves made no sense when I was using actual radii sizes from the planets, so I converted planet and star sizes into astronomical units (AU) using:
calculateSimpleTransit() Determines position, orbital angle, and flux at a given time
generateLightCurve() Generates flux data over a range of times
getScaleInfo() Converts planet/star radii to AU and KM for display and understanding
This project is designed for educational use to help students:
AST010 Wanderers in Space - Prof. Jana Grcevich Tufts University