solution_117_7a.py

#!/usr/bin/python3
# ====================================================================
# Plot sine function
# Note: cartesian coordinates origin (0,0) is the center of the
#       graphics window
# ====================================================================

import numpy as np
import graphics as gr
import draw_xy_axes as ax

# --------------------------------------------------------------------
# ---- sine func
# --------------------------------------------------------------------

def sine_func(deg):
    rad = np.deg2rad(deg)
    y = np.sin(rad)
    return y

# --------------------------------------------------------------------
# ---- range function for floats
# --------------------------------------------------------------------

def frange(start,end,inc):
    while start < end:
        yield start
        start += inc

# --------------------------------------------------------------------
# ---- draw a point (small circle) using window coordinates
# --------------------------------------------------------------------

def draw_point(x,y,color='red',size=4):
    p = gr.Circle(gr.Point(x,y),size)
    p.setFill(color)
    p.setOutline('black')
    p.draw(win)
    return p

# --------------------------------------------------------------------
# ---- main
# --------------------------------------------------------------------

if __name__ == '__main__':

    # ---- graphics window size

    window_width  = 801 
    window_height = 801

    # ---- setup graphics window

    win = gr.GraphWin('Sine Function',window_width,window_height)
    win.setBackground("white")

    # ---- draw X,Y axes

    ax.draw_xy_axes(win)

    # ---- plot sine function
    # ---- X scale factor    1 offset 400
    # ---- Y scale factor  100 offset 400

    xmin = 0
    xmax = 0
    ymin = 0
    ymax = 0

    for deg in range(-720,721,36):
        y = sine_func(deg)
        x = 400 + (deg * 1)
        y = 400 + (y * 100)
        draw_point(x,y)

        if x < xmin:
            xmin = x
        if x > xmax:
            xmax = x

        if y < ymin:
            ymin = y
        if y > ymax:
            ymax = y
        
    print(f'Xmin = {xmin}  Xmax = {xmax}')
    print(f'Ymin = {ymin}  Ymax = {ymax}')

    # ---- pause program (click in window to continue)

    click = win.getMouse()
    win.close()