#!/usr/bin/env python
# coding: utf-8


from math import sqrt


def milieu(xA,yA,xB,yB):
    """ Renvoie les coordonnées du milieu du segment [AB]
    pour appeler la fonction milieu, il faut écrire milieu(1,1,3,-1) pour A(1;1 et B(3;-1)"""

    return (xA+xB)/2,(yA+yB)/2


# Ecrire la fonction distance(xA,yA,xB,yB) qui renvoie la distance AB

def distance(xA,yA,xB,yB):
    """ Renvoie la distance AB
    pour appeler la fonction distance, il faut écrire distance(1,1,3,-1) pour A(1;1) et B(3;-1)"""

    d=sqrt((xB-xA)**2+(yB-yA)**2)
    # x**2 correspond à x²
    # sqrt(x) correspond à la racine carrée de x
    return d

def sont_presque_egaux(a,b):
    """Cette fonction teste si deux nombres sont égaux à 0.000000001 près"""
    if abs(b-a)<1E-9:
        return True
    else:
        return False

def vecteur(xA,yA,xB,yB)   :
    """Renvoie les coordonnées du vecteur d'origine A et d'extrémité B
    """
    return xB-xA,yB-yA


def sont_colineaires(xu,yu,xv,yv):
    """ Renvoie True si les vecteurs sont colinéaires, False sinon.
    """
    if sont_presque_egaux(xu*yv-yu*xv,0) :
        return True
    else :
        return False

def sont_paralleles(xA,yA,xB,yB,xC,yC,xD,yD):
    """ Renvoie True si les vecteurs sont colinéaires, False sinon.
    """
    return colineaires(xB-xA,yB-yA,xD-xC,yD-yC)

def sont_alignes(xA,yA,xB,yB,xC,yC):
    """ Renvoie True si les vecteurs sont colinéaires, False sinon.
    """
    return sont_colineaires(xB-xA,yB-yA,xC-xA,yC-yA)


print("On se place dans un repère orthonormé")
print("On consdère les points A(1;1) et B(3;-1)")
print("La distance entre A et B est :",distance(1,1,3,-1))
print("Les coordonnées du milieu de [AB] sont : ",milieu(1,1,3,-1))
print("Les coordonées du vecteur d'origine A et d'extrémité B :",vecteur(1,1,3,-1))
print("On considère le point C(-1;0)")
xc,yc=-1,0
test=sont_alignes(1,1,3,-1,xc,yc)
if test==True : print("Les points A,B et C sont alignés")
else : print("Les points A,B et C ne sont pas alignés")







