% tkz-obj-eu-polygons.tex % Copyright 2011-2026 Alain Matthes % SPDX-License-Identifier: LPPL-1.3c % Maintainer: Alain Matthes \typeout{2026/01/25 5.13c tkz-obj-eu-polygons.tex} % bug in regular polygon side 2020/03/09 \makeatletter %<--------------------------------------------------------------------------–> % Polygon %<--------------------------------------------------------------------------–> %<--------------------------- square ------------------------------------–> % %<--------------------------------------------------------------------------–> \def\tkzDefSquare(#1,#2){ \begingroup \tkzURotateAngle(#2,-90)(#1) \pgfnodealias{tkzFirstPointResult}{tkzPointResult} \tkzURotateAngle(#1, 90)(#2) \pgfnodealias{tkzSecondPointResult}{tkzPointResult} \endgroup } %<--------------------- parallélogramme ---------------------------------–> % %<--------------------------------------------------------------------------–> \def\tkzDefParallelogram(#1,#2,#3){ \begingroup \tkzDefPointWith[colinear= at #3](#2,#1) \endgroup } %<--------------------- rectangle ---------------------------------–> % %<--------------------------------------------------------------------------–> \def\tkzDefRectangle{\pgfutil@ifnextchar[{\tkz@DefRectangle}% {\tkz@DefRectangle[]}} \def\tkz@DefRectangle[#1](#2,#3){% \begingroup \path[#1](#2) -| coordinate (tkzFirstPointResult) (#3) -| coordinate (tkzSecondPointResult) (#2); \endgroup } %<-------------------------- gold rectangle -------------------------------–> % %<--------------------------------------------------------------------------–> \def\tkzDefGoldRectangle(#1,#2){ \begingroup \tkzDefPointWith[K=-\tkzInvPhi](#2,#1) \pgfnodealias{tkzFirstPointResult}{tkzPointResult} \tkzDefPointWith[K=\tkzInvPhi](#1,#2) \pgfnodealias{tkzSecondPointResult}{tkzPointResult} \endgroup } \let\tkzDefGoldenRectangle\tkzDefGoldRectangle %<---------------------------- Regular Polygon -------------------------–> \def\tkz@numregpol{0} \pgfkeys{/defregpoly/.cd, name/.store in = \tkz@regpolname, sides/.store in = \tkz@regpolsides, center/.code = \def\tkz@numregpol{0}, side/.code = \def\tkz@numregpol{1}, name/.default = P, sides/.default = 5, center } \def\tkzDefRegPolygon{\pgfutil@ifnextchar[{\tkz@DefRegPolygon}{\tkz@DefRegPolygon[]}} \def\tkz@DefRegPolygon[#1](#2,#3){% \begingroup \pgfqkeys{/defregpoly}{#1} \ifcase\tkz@numregpol% \tkzRegPolygonCenter(#2,#3) \or% \tkzRegPolygonSide(#2,#3) \fi \endgroup } \def\tkzRegPolygonCenter(#1,#2){ \begingroup \foreach \v in {1,2,...,\tkz@regpolsides} {% \pgfmathsetmacro{\tkz@regangle}{360/\tkz@regpolsides*(\v-1)} \tkzDefPointBy[rotation= center #1 angle \tkz@regangle](#2) \pgfnodealias{\tkz@regpolname\v}{tkzPointResult} } \endgroup } \def\tkzRegPolygonSide(#1,#2){ \begingroup % get the center \pgfmathsetmacro{\tkz@regangle}{360/\tkz@regpolsides*(\tkz@regpolsides-1)} \pgfmathsetmacro{\tkz@regangleside}{(180-\tkz@regangle)/2} \tkzDefMidPoint(#1,#2) \pgfnodealias{tkz@tempPt}{tkzPointResult} \tkz@@CalcLengthcm(tkz@tempPt,#1){tkz@len} \pgfmathsetmacro{\tkz@inscriberadius}{% \tkz@len*tan(90*(\tkz@regpolsides-2)/\tkz@regpolsides)} \tkzDefPointWith[orthogonal normed,K=\tkz@inscriberadius](tkz@tempPt,#2) \pgfnodealias{tkz@RegPolCenter}{tkzPointResult} \tkzRegPolygonCenter(tkz@RegPolCenter,#1) \pgfnodealias{tkzPointResult}{tkz@RegPolCenter} \endgroup } \makeatother \endinput