-- tkz_elements_vectors.lua
-- date 2023/11/10
-- version 1.20b
-- Copyright 2023  Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
-- of this license or (at your option) any later version.
-- The latest version of this license is in
--   http://www.latex-project.org/lppl.txt
-- and version 1.3 or later is part of all distributions of LaTeX
-- version 2005/12/01 or later.
-- This work has the LPPL maintenance status “maintained”.
-- The Current Maintainer of this work is Alain Matthes.

-- ----------------------------------------------------------------------------
vector = {}
function vector: new(z1, z2)
    local type = 'vector'
    local norm = point.abs(z2-z1)
    local new_vector = {st = z1, ed = z2,norm = norm,type=type}
    setmetatable(new_vector, {__index = vector})
    return new_vector
end

function vector: normalize  ()
   local z = self.ed-self.st
   local d = point.abs(z)
   local nz = point(z.re/d,z.im/d)
   return nz + self.st
end

 function vector: add (v)
   return vector :new (self.st+v.st, self.ed,v.ed)
 end
return vector
