from math import *

def f(x):
    return x+sin(x**2 + 4*x - 5)

def tabuler(f, x_min, x_max):
    tableau = []
    delta_x = (x_max-x_min)/nb_points
    x = x_min
    while x <= x_max:
        tableau.append([x,f(x)])
        x += delta_x
    return tableau

def y_min_et_max(t):
    y_min = t[0][1]
    y_max = y_min
    for pt in t:
        if pt[1]>y_max:
            y_max = pt[1]
        if pt[1]<y_min:
            y_min = pt[1]
    return y_min, y_max
    
def echelle(x, y, x_min, x_max, y_min, y_max):
    # change l'échelle
    a = largeur/(x_max-x_min)
    b = -a * x_min
    x1 = a*x + b
    a = hauteur/(y_min-y_max)
    b = -a * y_max
    y1 = a*y + b
    return x1, y1
  
def reinit():
    x_min = -6
    x_max = 3
    tab = []
    tab = tabuler(f, x_min, x_max)
    y_min, y_max = y_min_et_max(tab)
    #print(y_min, y_max)
    a1,b1 = echelle(x_max, y_max, x_min, x_max, y_min, y_max)
    #print(a1,b1)

hauteur = 600
largeur = 4*hauteur//3
nb_points = largeur

reinit()


