""" vecteurs.py
"""
#! /usr/bin/python3
# -*- coding: utf-8 -*-

# classe simple (exemple pédagogique) : vecteur (x, y)
# ( dans ce cas simple, il vaut mieux utiliser numpy.arrray((x,y)) )

import sys
import math

class vecteur :
    def __init__(self, x, y) :
        # initialisation d'un vecteur : u = vecteur(x,y)
        self.x = x
        self.y = y
        return
    def __str__(self) :
        # écriture d'un vecteur : print(u) ou str(u)
        chaine = ""
        chaine += "(" + str(self.x) + ";" + str(self.y) + ")"
        return chaine
    def longueur(self) :
        # formule de Pythagore
        v = math.sqrt(self.x**2 + self.y**2)
        return v
    def __add__(self, v) :
        # addition de 2 vecteurs : u + v
        x = self.x + v.x
        y = self.y + v.y
        return vecteur(x, y)
    def __mul__(self, v) :
        # multiplication scalaire de 2 vecteurs : u * v
        # (non standard) avec numpy : u.dot(v)
        p = self.x * v.x + self.y * v.y
        return p
    
def perpendiculaire(u, v):
    # teste par Pythagore si 2 vecteurs sont perpendiculaires
    # remarque (x, y) et (-y, x) sont perpendiculaires
    w = u + v
    if abs(w.longueur()**2 - u.longueur()**2 - v.longueur()**2) < 1.e-14 :
        print("les vecteurs :", u, "et ", v, "sont perpendiculaires.")
    else :
        print("les vecteurs :", u, "et ", v, "ne sont pas perpendiculaires.")
    return

# tests sur le triangle rectangle (3, 4, 5) :
u = vecteur(3, 0)
v = vecteur(0, 4)
w = u + v
print("Pythagore 1 : u²=", u*u, "v²=", v*v, "w²=", w*w, "(=u²+v²)")
# d'hypotenuse 5 et de cotes de l'angle droit 3 et 4
print("### Vecteurs ###")
u = vecteur(3, 4)
v = vecteur(-4, 3)
w = u + v
print("somme de 2 vecteurs : w=", w)
perpendiculaire(u, v)
print("Pythagore 2 : u²=", u*u, "v²=", v*v, "w²=", w*w, "(=u²+v²)")
"""
"""