summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
blob: c2802cd41fc2c45abed39f4e9b2b80025fb0135f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
-- tkz_elements_vectors.lua
-- date 2024/01/16
-- version 1.82c
-- Copyright 2024  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 arg        = point.arg (z2-z1)
    local o =  {st   = z1, 
                ed   = z2,
                norm = norm,
                arg  = arg,
                type = type }
    setmetatable(o, self)
    self.__index = self
    return o
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
 
 function vector: ortho ()
   return vector : new (self.st, rotation_(self.st,math.pi/2,self.ed))
 end
 
return vector