#!/usr/bin/python3
# ==================================================================
# Who can hear us?
#
# Draw a circle for the galaxy and draw a circle for how far
# our radio broadcasts have reached. Draw the radio circle
# relative to Earth's position in the galaxy.
# ==================================================================
# Started radio broadcasting commercially around 1920 to 1923.
#
# Radio waves travel at approximately at the speed of light
# (186,000 miles a second).
#
# The estimated diameter of the Milky Way is 105,700 light years.
#
# The earth is located about 25,000 light-years from the center
# of the Milky Way in one of the spiral arms.
# ==================================================================
import graphics as gr
import user_interface as ui
import coordinate_conversion as cc
import draw_axes as ax
galaxy_pixel_radius = 300 # pixels
window_pixel_width = 801 # pixels
window_pixel_height = 801 # pixels
radio_broadcast_years = 2021 - 1920 # years
galaxy_diameter = 105700 # light years
galaxy_raidus = galaxy_diameter / 2 # light years
earth_location_in_galaxy = 25000 # light years
# ---- given the galaxy radius in pixels and the size of
# ---- the galaxy in light years, calculate the number of pixels
# ---- per light year.
pixels_per_light_year = galaxy_pixel_radius / galaxy_raidus
# -------------------------------------------------------------------
# ---- draw a circle
# -------------------------------------------------------------------
def draw_circle(win,x,y,r,color):
wx,wy = cc.center_to_win_coords(x,y,
window_pixel_width,window_pixel_height)
c = gr.Circle(gr.Point(wx,wy),r)
c.setWidth(1)
c.setOutline(color)
c.draw(win)
# -------------------------------------------------------------------
# ---- main
# -------------------------------------------------------------------
# ---- display stats
print()
print(f'galaxy_pixel_radius : {galaxy_pixel_radius} (pixels)')
print(f'window_pixel_width : {window_pixel_width} (pixels)')
print(f'window_pixel_height : {window_pixel_height} (pixels)')
print(f'radio_broadcast_years : {radio_broadcast_years} (years)')
print(f'galaxy_diameter : {galaxy_diameter} (light years)')
print(f'galaxy_radius : {galaxy_radius} (light years)')
print(f'earth_location_in_galaxy: {earth_location_in_galaxy} (light years)')
print(f'pixels_per_lightyear : {pixels_per_light_year} (pixels)')
print()
# ---- create window
win = gr.GraphWin("Who Can Hear Us?",
window_pixel_width,window_pixel_height)
win.setBackground("white")
# ---- draw axes
ax.draw_xy_axes(win,True)
# ---- draw galaxy
draw_circle(win,0,0,galaxy_pixel_radius,"red")
# ---- draw earth radio broadcast area
draw_circle(win,
25000 * pixels_per_light_year,
0,
pixels_per_light_year * radio_broadcast_years,
"black")
ui.pause()
win.close()