solution_117_1.py

#!/usr/bin/python3
# ====================================================================
# plot curve #1
# ====================================================================

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

# --------------------------------------------------------------------
# ---- curve #1
# --------------------------------------------------------------------

def curve01(x):
    y = 1/(1+x**2)
    return y
   
# --------------------------------------------------------------------
# ---- range function for floats
# --------------------------------------------------------------------

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

if __name__ == '__main__':

    # ---- 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

    # ---- setup graphics window
    
    win = gr.GraphWin('Curve #1',801,801)
    win.setBackground("white")

    # ---- draw X,Y axes

    ax.draw_xy_axes(win)

    # ---- plot curve #1
    # ---- X scale factor   35  offset 400
    # ---- Y scale factor -300  offset 400

    for x in range(-10,10):
        y = curve01(x)
        print(f'x={x:>6.2f}  y={y:>6.2f}  (raw values)')
        x = 400 + (i * 35)
        y = 400 + (y * -300)
        draw_point(x,y)

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

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