%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % polygonesCoordinate\pst-coxcoor.tex % Authors: J.-G. Luque and M. Luque % Purpose: Library pst-coxcoor.tex % Created: 02/02/2008 % License: LGPL % Project: PST-Cox V1.00 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright © 2008 Jean-Gabriel Luque, Manuel Luque. % This work may be distributed and/or modified under the condition of % the Lesser GPL. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This file is part of PST-Cox V1.00. % % PST-Cox V1.00 is free software: you can redistribute it and/or modify % it under the terms of the Lesser GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % PST-Cox V1.00 is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % Lesser GNU General Public License for more details. % % You should have received a copy of the Lesser GNU General Public License % along with PST-Cox V1.00. If not, see . %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\fileversion{0.98 Beta} \def\filedate{2008/14/01} \message{`Pst-Coxeter-Coordinates' v\fileversion, \filedate\space (Jean-Gabriel Luque and Manuel Luque)} \csname PstCoxeterCoordinatesLoaded\endcsname \let\PstCoxeterCoordinatesLoaded\endinput % Require PSTricks and pst-xkey \ifx\PSTnodeLoaded\endinput\else\input pstricks.tex\fi \ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex\fi % % Catcodes changes. \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax \pst@addfams{pst-coxeter} %%% Parameter choice. Allows to choice the polytope. To each integer %%% 080 \typeout{choice < or = 80 and not `\the\pst@cntg'. Value 1 forced.} \pst@cntg=1 \fi \edef\psk@pstCoxeter@choice{#1}} \psset{choice=1} % % % Graphical parameters % % Colors % Color of Vertices % Example: \CoxeterCoordinates[colorVertices=blue,choice=5] \define@key[psset]{pst-coxeter}{colorVertices}{% \pst@getcolor{#1}\pscolorVertices} % by default the color of the vertices is green \psset{colorVertices=green} % Color of centers % Example: \CoxeterCoordinates[colorCenters=blue,choice=5] \define@key[psset]{pst-coxeter}{colorCenters}{% \pst@getcolor{#1}\pscolorCenters} \psset{colorCenters=blue} % Color of centers of the faces % Example: \CoxeterCoordinates[colorCentersFaces=blue,choice=5] \define@key[psset]{pst-coxeter}{colorCentersFaces}{% \pst@getcolor{#1}\pscolorCentersFaces} \psset{colorCentersFaces=red} % % Color of centers of the Cells % Example: \CoxeterCoordinates[colorCentersCells=blue,choice=5] \define@key[psset]{pst-coxeter}{colorCentersCells}{% \pst@getcolor{#1}\pscolorCentersCells} % by default the color of the centers is red. \psset{colorCentersCells=magenta} % % % Dot styles % style of Vertices % Example: \CoxeterCoordinates[styleVertices=*pentagon,P=5] \def\psset@styleVertices#1{% \@ifundefined{psds@#1}% {\@pstrickserr{styleVertices `#1' not defined}\@eha}% {\edef\psk@styleVertices{#1}}} % by default the vertices are represented by a (empty) circle (styleVertices=o) \psset@styleVertices{o} % style of Centers % Example: \CoxeterCoordinates[styleCenters=*pentagon,choice=5] \def\psset@styleCenters#1{% \@ifundefined{psds@#1}% {\@pstrickserr{styleCenters `#1' not defined}\@eha}% {\edef\psk@styleCenters{#1}}} % by default the vertices are represented by a disk (styleVertices=*) \psset@styleCenters{*} % % style of Centers of the faces % Example: \CoxeterCoordinates[styleCentersFaces=*pentagon,choice=5] % \def\psset@styleCentersFaces#1{% \@ifundefined{psds@#1}% {\@pstrickserr{styleCentersFaces `#1' not defined}\@eha}% {\edef\psk@styleCentersFaces{#1}}} % % by default the centers of the faces are represented by a disk (styleCentersFaces=*) % \psset@styleCentersFaces{*} % style of Centers of the Cells % Example: \CoxeterCoordinates[styleCentersCells=*pentagon,choice=5] \def\psset@styleCentersCells#1{% \@ifundefined{psds@#1}% {\@pstrickserr{styleCentersCells `#1' not defined}\@eha}% {\edef\psk@styleCentersCells{#1}}} % by default the centers of the cells are represented by a disk (stylesCentersCells=*) \psset@styleCentersCells{*} % % % Dot sizes % Size of vertices % Example: \CoxeterCoordinates[sizeVertices=0.1,choice=5] \newdimen\pssizeVertices \def\psset@sizeVertices#1{\pssetlength\pssizeVertices{#1}} \psset@sizeVertices{0.05} % Sizes of centers % Example: \CoxeterCoordinates[sizeCenters=0.1,choice=5] \newdimen\pssizeCenters \def\psset@sizeCenters#1{\pssetlength\pssizeCenters{#1}} \psset@sizeCenters{0.05} % % Sizes of centers of the faces % Example: \CoxeterCoordinates[sizeCentersFaces=0.1,choice=5] % \newdimen\pssizeCentersFaces \def\psset@sizeCentersFaces#1{\pssetlength\pssizeCentersFaces{#1}} \psset@sizeCentersFaces{0.05} % % Sizes of centers of the cells % Example: \CoxeterCoordinates[sizeCentersCells=0.1,choice=5] % \newdimen\pssizeCentersCells \def\psset@sizeCentersCells#1{\pssetlength\pssizeCentersCells{#1}} \psset@sizeCentersCells{0.05}% % \newif\ifPst@drawvertices \define@key[psset]{pst-coxeter}{drawvertices}[true]{% \@nameuse{Pst@drawvertices#1}} % \newif\ifPst@drawedges \define@key[psset]{pst-coxeter}{drawedges}[true]{% \@nameuse{Pst@drawedges#1}} % \newif\ifPst@drawcenters \define@key[psset]{pst-coxeter}{drawcenters}[true]{% \@nameuse{Pst@drawcenters#1}} % % \newif\ifPst@drawcentersfaces \define@key[psset]{pst-coxeter}{drawcentersfaces}[false]{% \@nameuse{Pst@drawcentersfaces#1}} % % \newif\ifPst@drawcenterscells \define@key[psset]{pst-coxeter}{drawcenterscells}[false]{% \@nameuse{Pst@drawcenterscells#1}} % \psset{drawvertices=true,drawedges=true,drawcenters=true} % %% Prologue for postscript \pstheader{pst-coxeter.pro} % % definition if the macro \CoxeterCoordinates % \def\CoxeterCoordinates{\pst@object{CoxeterCoordinates}} \def\CoxeterCoordinates@i{\@ifnextchar[{\CoxeterCoordinates@do}{\CoxeterCoordinates@do[]}} \def\CoxeterCoordinates@do[#1]{{% \psset{#1}% \begin@ClosedObj \addto@pscode{% % % List of the polytopes % The option choice allows to choice the polytope % Each values of choice corresponds to a variable cox***datas % The variables cox***datas are defined in the file pst-coxcoor.pro % /choice \the\pst@cntg\space def choice 1 eq {cox233datas} if choice 2 eq {cox332datas} if choice 3 eq {cox333datas} if choice 4 eq {cox342datas} if choice 5 eq {cox344datas} if choice 6 eq {cox343datas} if choice 7 eq {cox434datas} if choice 8 eq {cox24333datas} if choice 9 eq {cox33333datas} if choice 10 eq {cox33342datas} if choice 11 eq {cox3333333datas} if choice 12 eq {cox382datas} if choice 13 eq {cox283datas} if choice 14 eq {cox353datas} if choice 15 eq {cox443datas} if choice 16 eq {cox432datas} if choice 17 eq {cox234datas} if choice 18 eq {cox264datas} if choice 19 eq {cox462datas} if choice 20 eq {cox535datas} if choice 21 eq {cox2103datas} if choice 22 eq {cox3102datas} if choice 23 eq {cox253datas} if choice 24 eq {cox352datas} if choice 25 eq {cox243datas} if choice 26 eq {cox23243datas} if choice 27 eq {cox34232datas} if choice 28 eq {cox3423232datas} if choice 29 eq {cox2323243datas} if choice 30 eq {cox23252datas} if choice 31 eq {cox25232datas} if choice 32 eq {cox2323242datas} if choice 33 eq {cox2423232datas} if choice 34 eq {cox2324232datas} if choice 35 eq {cox2323252datas} if choice 36 eq {cox2523232datas} if choice 37 eq {cox3523datas} if % choice 38 eq {cox5525datas} if choice 39 eq {cox2523datas} if choice 40 eq {cox3522datas} if choice 41 eq {cox31032datas} if choice 42 eq {cox21033datas} if choice 43 eq {cox3832datas} if choice 44 eq {cox2833datas} if choice 45 eq {cox562datas} if choice 46 eq {cox265datas} if choice 47 eq {cox4833datas} if choice 48 eq {cox3834datas} if choice 49 eq {cox552datas} if choice 50 eq {cox255datas} if choice 51 eq {cox51032datas} if choice 52 eq {cox21035datas} if choice 53 eq {cox532datas} if choice 54 eq {cox235datas} if choice 55 eq {cox542datas} if choice 56 eq {cox245datas} if choice 57 eq {cox51033datas} if choice 58 eq {cox31035datas} if choice 59 eq {cox543datas} if choice 60 eq {cox345datas} if choice 61 eq {cox533datas} if choice 62 eq {cox335datas} if choice 63 eq {cox5523datas} if choice 64 eq {cox3525datas} if choice 65 eq {cox252232datas} if choice 66 eq {cox232522datas} if choice 67 eq {cox252252datas} if choice 68 eq {cox252522datas} if choice 69 eq {cox263datas} if choice 70 eq {cox362datas} if choice 71 eq {cox25223232datas} if choice 72 eq {cox23232522datas} if choice 73 eq {cox23252252datas} if choice 74 eq {cox23252522datas} if choice 75 eq {cox25223252datas} if choice 76 eq {cox25225232datas} if choice 77 eq {cox25232522datas} if choice 78 eq {cox25252232datas} if choice 79 eq {cox25252252datas} if choice 80 eq {cox252252522datas} if %%% <-- add new polytope here 0 0 translate %%% Usefull definitions /pscolorVertices {\pst@usecolor\pscolorVertices currentrgbcolor} def /pscolorCenters {\pst@usecolor\pscolorCenters currentrgbcolor} def /pscolorCentersFaces {\pst@usecolor\pscolorCentersFaces currentrgbcolor} def /pscolorCentersCells {\pst@usecolor\pscolorCentersCells currentrgbcolor} def /unit \pst@number\psunit\space def % pts -> cm /unit \pst@number\psunit\space def % pts -> cm 1 setlinejoin %%%% Drawing the edges \ifPst@drawedges 0 1 NbrEdges 1 sub { % from 0 to nbedges-1 (draw all the edges) /CompteurVertices ED /CompteurIntermediaireSommets CompteurVertices NbrVerticesInAnEdge mul def newpath ListePoints CompteurIntermediaireSommets get aload pop /Y exch def /X exch def X unit mul Y unit mul moveto 1 1 NbrVerticesInAnEdge 1 sub { % from 1 to nbvertices in an edge -1 /CompteurEdges ED ListePoints CompteurIntermediaireSommets CompteurEdges add get aload pop /Y exch def /X exch def X unit mul Y unit mul lineto } for closepath stroke } for \fi % %%%% Drawing of the Vertices /DS \pst@number\pssizeVertices\space def \@nameuse{psds@\psk@styleVertices}% \ifPst@drawvertices % We draw all the vertices of all edges 0 1 NbrEdges NbrVerticesInAnEdge mul 1 sub { % From 0 to nbEdges*NbVerticesInEdges-1 /CompteurEdges ED ListePoints CompteurEdges get aload pop /Y exch def /X exch def pscolorVertices X unit mul Y unit mul Dot stroke } for \fi % % Drawing of the Centers of the Faces % /DS \pst@number\pssizeCentersFaces\space def \@nameuse{psds@\psk@styleCentersFaces}% \ifPst@drawcentersfaces 0 1 NbrFaces 1 sub{ % from 0 to NbrFaces-1 /CompteurFaces ED ListeFaces CompteurFaces get aload pop /Y exch def /X exch def pscolorCentersFaces X unit mul Y unit mul Dot stroke } for \fi % % Drawing the centers of the Cells % /DS \pst@number\pssizeCentersCells\space def \@nameuse{psds@\psk@styleCentersCells}% \ifPst@drawcenterscells 0 1 NbrCells 1 sub{ % from 0 to nbCells-1 /CompteurCells ED ListeCells CompteurCells get aload pop /Y exch def /X exch def pscolorCentersCells X unit mul Y unit mul Dot stroke } for \fi % % Drawing the centers of the Edges % /DS \pst@number\pssizeCenters\space def \@nameuse{psds@\psk@styleCenters}% \ifPst@drawcenters 0 1 NbrEdges 1 sub { % from 0 to NbrEdges -1 /CompteurVertices ED /CompteurIntermediaireSommets CompteurVertices NbrVerticesInAnEdge mul def /XM 0 def /YM 0 def 0 1 NbrVerticesInAnEdge 1 sub { % /CompteurEdges ED ListePoints CompteurEdges CompteurIntermediaireSommets add get aload pop /Y ED /X ED /XM XM X add def /YM YM Y add def } for pscolorCenters XM NbrVerticesInAnEdge div unit mul YM NbrVerticesInAnEdge div unit mul %1.5 0 360 arc Dot stroke } for \fi }% \end@ClosedObj }} \catcode`\@=\PstAtCode\relax \endinput %% %% END: pst-coxeter3.tex