-- tkz_elements_regular.lua
-- date 2024/07/16
-- version 3.00
-- 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.

regular_polygon = {}
function regular_polygon: new (za, zb ,nb)
   local type              = 'regular_polygon'
   local table             = regular_ (za , zb , nb)
   local center            = za
   local through           = zb
   local angle             = 2 * math.pi/nb
   local exradius          = point.abs (zb-za)
   local circle            = circle : new (za,zb)
   local inradius          = exradius * math.cos(math.pi/nb)
   local side              = exradius * math.sin(math.pi/nb)
   local next              = table[2]
   local first             = table[1]
   local proj              = projection_ (first,next,za)
   local o = { type        = type, 
               center      = center, 
               through     = through,
               exradius    = exradius, 
               inradius    = inradius,
               table       = table, 
               circle      = circle, 
               nb          = nb,
               angle       = angle, 
               side        = side, 
               proj        = proj }
    setmetatable(o, self)
    self.__index = self
    return o
end
-----------------------
-- points --
-----------------------
-------------------
-- Result -> line
-------------------
-----------------------
-- circles --
-----------------------
function regular_polygon : incircle ()
   local next,first
    next  = self.table[2]
    first = self.table[1]
   return circle : new ( self.center , projection_ (first,next,self.center) )  
end
-------------------
-- Result -> triangle
-------------------

-------------------
-- Result -> miscellaneous
-------------------
function regular_polygon : name (nm)
     for K,V in ipairs(self.table) do
         z[nm..K] = V
      end
end

return regular_polygon