%% %% This is file `curve2e.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% curve2e.dtx (with options: `package') %% %% Copyright 2005 Claudio Beccari All rights reserved. %% %% This system 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. %% %% %% IMPORTANT NOTICE: %% %% 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 2003/12/01 or later. %% %% This work has the LPPL maintenance status "author-maintained". %% %% This work consists of all files listed in manifest.txt. %% %% %% If you receive only some of these files from someone, complain! %% %% %% File `curve2e.dtx'. %% Copyright (C) 2005--2006 Claudio Beccari all rights reserved. %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{curve2e}% [2008/05/04 v.1.01 Extension package for pict2e] \RequirePackage{color} \RequirePackageWithOptions{pict2e}[2004/06/01] \ifcase\pIIe@mode\relax \or %Postscript \def\roundcap{\special{ps:: 1 setlinecap}}% \def\squarecap{\special{ps:: 0 setlinecap}}% \def\roundjoin{\special{ps:: 1 setlinejoin}}% \def\beveljoin{\special{ps:: 2 setlinejoin}}% \or %pdf \def\roundcap{\pdfliteral{1 J}}% \def\squarecap{\pdfliteral{0 J}}% \def\roundjoin{\pdfliteral{1 j}}% \def\beveljoin{\pdfliteral{2 j}}% \fi \def\TRON{\tracingcommands\tw@ \tracingmacros\tw@}% \def\TROF{\tracingcommands\z@ \tracingmacros\z@}% \ifx\undefined\@tdA \newdimen\@tdA \fi \ifx\undefined\@tdB \newdimen\@tdB \fi \ifx\undefined\@tdC \newdimen\@tdC \fi \ifx\undefined\@tdD \newdimen\@tdD \fi \ifx\undefined\@tdE \newdimen\@tdE \fi \ifx\undefined\@tdF \newdimen\@tdF \fi \ifx\undefined\defaultlinewidth \newdimen\defaultlinewidth \fi \gdef\linethickness#1{\@wholewidth#1\@halfwidth.5\@wholewidth\ignorespaces}% \newcommand\defaultlinethickness[1]{\defaultlinewidth=#1\relax \def\thicklines{\linethickness{\defaultlinewidth}}% \def\thinlines{\linethickness{.5\defaultlinewidth}}% \thinlines\ignorespaces} \def\Line(#1,#2){\pIIe@moveto\z@\z@ \pIIe@lineto{#1\unitlength}{#2\unitlength}\pIIe@strokeGraph}% \def\LINE(#1)(#2){\@killglue\polyline(#1)(#2)}% \def\line(#1)#2{\begingroup \@linelen #2\unitlength \ifdim\@linelen<\z@\@badlinearg\else \expandafter\DirOfVect#1to\Dir@line \GetCoord(\Dir@line)\d@mX\d@mY \ifdim\d@mX\p@=\z@\else \DividE\ifdim\d@mX\p@<\z@-\fi\p@ by\d@mX\p@ to\sc@lelen \@linelen=\sc@lelen\@linelen \fi \pIIe@moveto\z@\z@ \pIIe@lineto{\d@mX\@linelen}{\d@mY\@linelen}% \pIIe@strokeGraph \fi \endgroup\ignorespaces}% \def\GetCoord(#1)#2#3{% \expandafter\SplitNod@\expandafter(#1)#2#3\ignorespaces} \def\SplitNod@(#1,#2)#3#4{\edef#3{#1}\edef#4{#2}}% \def\vector(#1)#2{% \begingroup \GetCoord(#1)\d@mX\d@mY \@linelen#2\unitlength \ifdim\d@mX\p@=\z@\ifdim\d@mY\p@=\z@\@badlinearg\fi\fi \ifdim\@linelen<\z@ \@linelen=-\@linelen\fi \MakeVectorFrom\d@mX\d@mY to\@Vect \DirOfVect\@Vect to\Dir@Vect \YpartOfVect\Dir@Vect to\@ynum \@ydim=\@ynum\p@ \XpartOfVect\Dir@Vect to\@xnum \@xdim=\@xnum\p@ \ifdim\d@mX\p@=\z@ \else\ifdim\d@mY\p@=\z@ \else \DividE\ifdim\@xnum\p@<\z@-\fi\p@ by\@xnum\p@ to\sc@lelen \@linelen=\sc@lelen\@linelen \fi \fi \@tdB=\@linelen \pIIe@concat\@xdim\@ydim{-\@ydim}\@xdim{\@xnum\@linelen}{\@ynum\@linelen}% \@linelen\z@ \pIIe@vector \pIIe@fillGraph \@linelen=\@tdB \@tdA=\pIIe@FAW\@wholewidth \@tdA=\pIIe@FAL\@tdA \advance\@linelen-\@tdA \ifdim\@linelen>\z@ \pIIe@moveto\z@\z@ \pIIe@lineto{\@xnum\@linelen}{\@ynum\@linelen}% \pIIe@strokeGraph\fi \endgroup} \def\Vector(#1,#2){% \ifdim#1\p@=\z@\vector(#1,#2){#2} \else \vector(#1,#2){#1}\fi} \def\VECTOR(#1)(#2){\begingroup \SubVect#1from#2to\@tempa \expandafter\put\expandafter(#1){\expandafter\Vector\expandafter(\@tempa)}% \endgroup\ignorespaces} \let\lp@r( \let\rp@r) \def\polyline(#1){\@killglue\beveljoin\GetCoord(#1)\d@mX\d@mY \pIIe@moveto{\d@mX\unitlength}{\d@mY\unitlength}% \@ifnextchar\lp@r{\p@lyline}{% \PackageWarning{curve2e}% {Polygonal lines require at least two vertices!\MessageBreak Control your polygonal line specification\MessageBreak}% \ignorespaces}} \def\p@lyline(#1){\GetCoord(#1)\d@mX\d@mY \pIIe@lineto{\d@mX\unitlength}{\d@mY\unitlength}% \@ifnextchar\lp@r{\p@lyline}{\pIIe@strokeGraph\ignorespaces}} \def\GraphGrid(#1,#2){\begingroup\textcolor{red}{\linethickness{.1\p@}% \RoundUp#1modulo10to\@GridWd \RoundUp#2modulo10to\@GridHt \@tempcnta=\@GridWd \divide\@tempcnta10\relax \advance\@tempcnta\@ne \multiput(0,0)(10,0){\@tempcnta}{\line(0,1){\@GridHt}}% \@tempcnta=\@GridHt \divide\@tempcnta10\advance\@tempcnta\@ne \multiput(0,0)(0,10){\@tempcnta}{\line(1,0){\@GridWd}}\thinlines}% \endgroup\ignorespaces} \def\RoundUp#1modulo#2to#3{\expandafter\@tempcnta\Integer#1.??% \count254\@tempcnta\divide\count254by#2\relax \multiply\count254by#2\relax \count252\@tempcnta\advance\count252-\count254 \ifnum\count252>0\advance\count252-#2\relax \advance\@tempcnta-\count252\fi\edef#3{\number\@tempcnta}\ignorespaces}% \def\Integer#1.#2??{#1}% \ifx\DividE\undefined \def\DividE#1by#2to#3{% \begingroup \dimendef\Numer=254\relax \dimendef\Denom=252\relax \countdef\Num 254\relax \countdef\Den 252\relax \countdef\I=250\relax \Numer #1\relax \Denom #2\relax \ifdim\Denom<\z@ \Denom -\Denom \Numer -\Numer\fi \def\segno{}\ifdim\Numer<\z@ \def\segno{-}\Numer -\Numer\fi \ifdim\Denom=\z@ \ifdim\Numer>\z@\def\Q{16383.99999}\else\def\Q{-16383.99999}\fi \else \Num=\Numer \Den=\Denom \divide\Num\Den \edef\Q{\number\Num.}% \advance\Numer -\Q\Denom \I=6\relax \@whilenum \I>\z@ \do{\DividEDec\advance\I\m@ne}% \fi \xdef#3{\segno\Q}\endgroup }% \def\DividEDec{\Numer=10\Numer \Num=\Numer \divide\Num\Den \edef\q{\number\Num}\edef\Q{\Q\q}\advance\Numer -\q\Denom}% \fi \ifx\undefined\@Numero% s {\let\cc\catcode \cc`p=12\cc`t=12\gdef\@Numero#1pt{#1}}% \fi \ifx\undefined\Numero \def\Numero#1#2{\dimen254 #2\edef#1{\expandafter\@Numero\the\dimen254}\ignorespaces}% \fi \def\g@tTanCotanFrom#1to#2and#3{% \DividE 114.591559\p@ by#1to\X \@tdB=\X\p@ \countdef\I=254\def\Tan{0}\I=11\relax \@whilenum\I>\z@\do{% \@tdC=\Tan\p@ \@tdD=\I\@tdB \advance\@tdD-\@tdC \DividE\p@ by\@tdD to\Tan \advance\I-2\relax}% \def#2{\Tan}\DividE\p@ by\Tan\p@ to\Cot \def#3{\Cot}% \ignorespaces}% \def\SinOf#1to#2{\begingroup% \@tdA=#1\p@% \ifdim\@tdA>\z@% \@whiledim\@tdA>180\p@\do{\advance\@tdA -360\p@}% \else% \@whiledim\@tdA<-180\p@\do{\advance\@tdA 360\p@}% \fi \ifdim\@tdA=\z@ \gdef#2{0}% \else \ifdim\@tdA>\z@ \def\Segno{+}% \else \def\Segno{-}% \@tdA=-\@tdA \fi \ifdim\@tdA>90\p@ \@tdA=-\@tdA \advance\@tdA 180\p@ \fi \ifdim\@tdA=90\p@ \xdef#2{\Segno1}% \else \ifdim\@tdA=180\p@ \gdef#2{0}% \else \ifdim\@tdA<\p@ \@tdA=\Segno0.0174533\@tdA \DividE\@tdA by\p@ to#2% \else \g@tTanCotanFrom\@tdA to\T and\Tp \@tdA=\T\p@ \advance\@tdA \Tp\p@ \DividE \Segno2\p@ by\@tdA to#2% \fi \fi \fi \fi \endgroup\ignorespaces}% \def\CosOf#1to#2{\begingroup% \@tdA=#1\p@% \ifdim\@tdA>\z@% \@whiledim\@tdA>360\p@\do{\advance\@tdA -360\p@}% \else% \@whiledim\@tdA<\z@\do{\advance\@tdA 360\p@}% \fi \ifdim\@tdA>180\p@ \@tdA=-\@tdA \advance\@tdA 360\p@ \fi \ifdim\@tdA<90\p@ \def\Segno{+}% \else \def\Segno{-}% \@tdA=-\@tdA \advance\@tdA 180\p@ \fi \ifdim\@tdA=\z@ \gdef#2{\Segno1}% \else \ifdim\@tdA<\p@ \@tdA=0.0174533\@tdA \Numero\@tempA\@tdA \@tdA=\@tempA\@tdA \@tdA=-.5\@tdA \advance\@tdA \p@ \DividE\@tdA by\p@ to#2% \else \ifdim\@tdA=90\p@ \gdef#2{0}% \else \g@tTanCotanFrom\@tdA to\T and\Tp \@tdA=\Tp\p@ \advance\@tdA-\T\p@ \@tdB=\Tp\p@ \advance\@tdB\T\p@ \DividE\Segno\@tdA by\@tdB to#2% \fi \fi \fi \endgroup\ignorespaces}% \def\TanOf#1to#2{\begingroup% \@tdA=#1\p@% \ifdim\@tdA>90\p@% \@whiledim\@tdA>90\p@\do{\advance\@tdA -180\p@}% \else% \@whiledim\@tdA<-90\p@\do{\advance\@tdA 180\p@}% \fi% \ifdim\@tdA=\z@% \gdef#2{0}% \else \ifdim\@tdA>\z@ \def\Segno{+}% \else \def\Segno{-}% \@tdA=-\@tdA \fi \ifdim\@tdA=90\p@ \xdef#2{\Segno16383.99999}% \else \ifdim\@tdA<\p@ \@tdA=\Segno0.0174533\@tdA \DividE\@tdA by\p@ to#2% \else \g@tTanCotanFrom\@tdA to\T and\Tp \@tdA\Tp\p@ \advance\@tdA -\T\p@ \DividE\Segno2\p@ by\@tdA to#2% \fi \fi \fi \endgroup\ignorespaces}% \def\MakeVectorFrom#1#2to#3{\edef#3{#1,#2}\ignorespaces}% \def\CopyVect#1to#2{\edef#2{#1}\ignorespaces}% \def\ModOfVect#1to#2{\GetCoord(#1)\t@X\t@Y \@tempdima=\t@X\p@ \ifdim\@tempdima<\z@ \@tempdima=-\@tempdima\fi \@tempdimb=\t@Y\p@ \ifdim\@tempdimb<\z@ \@tempdimb=-\@tempdimb\fi \ifdim\@tempdima>\@tempdimb \DividE\@tempdimb by\@tempdima to\@T \@tempdimc=\@tempdima \else \DividE\@tempdima by\@tempdimb to\@T \@tempdimc=\@tempdimb \fi \ifdim\@T\p@>\z@ \@tempdima=\@T\p@ \@tempdima=\@T\@tempdima \advance\@tempdima\p@ % \@tempdimb=\p@% \@tempcnta=5\relax \@whilenum\@tempcnta>\z@\do{\DividE\@tempdima by\@tempdimb to\@T \advance\@tempdimb \@T\p@ \@tempdimb=.5\@tempdimb \advance\@tempcnta\m@ne}% \@tempdimc=\@T\@tempdimc \fi \Numero#2\@tempdimc \ignorespaces}% \def\DirOfVect#1to#2{\GetCoord(#1)\t@X\t@Y \ModOfVect#1to\@tempa \ifdim\@tempdimc=\z@\else \DividE\t@X\p@ by\@tempdimc to\t@X \DividE\t@Y\p@ by\@tempdimc to\t@Y \MakeVectorFrom\t@X\t@Y to#2\relax \fi\ignorespaces}% \def\ModAndDirOfVect#1to#2and#3{% \GetCoord(#1)\t@X\t@Y \ModOfVect#1to#2% \DividE\t@X\p@ by\@tempdimc to\t@X \DividE\t@Y\p@ by\@tempdimc to\t@Y \MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% \def\DistanceAndDirOfVect#1minus#2to#3and#4{% \SubVect#2from#1to\@tempa \ModAndDirOfVect\@tempa to#3and#4\relax \ignorespaces}% \def\XpartOfVect#1to#2{% \GetCoord(#1)#2\@tempa \ignorespaces}% \def\YpartOfVect#1to#2{% \GetCoord(#1)\@tempa#2\relax \ignorespaces}% \def\DirFromAngle#1to#2{\CosOf#1to\t@X% \SinOf#1to\t@Y\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}% \def\ScaleVect#1by#2to#3{\GetCoord(#1)\t@X\t@Y \@tempdima=\t@X\p@ \@tempdima=#2\@tempdima\Numero\t@X\@tempdima \@tempdima=\t@Y\p@ \@tempdima=#2\@tempdima\Numero\t@Y\@tempdima \MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% \def\ConjVect#1to#2{\GetCoord(#1)\t@X\t@Y \@tempdima=-\t@Y\p@\Numero\t@Y\@tempdima \MakeVectorFrom\t@X\t@Y to#2\ignorespaces}% \def\AddVect#1and#2to#3{\GetCoord(#1)\tu@X\tu@Y \GetCoord(#2)\td@X\td@Y \@tempdima\tu@X\p@ \advance\@tempdima\td@X\p@ \Numero\t@X\@tempdima \@tempdima\tu@Y\p@ \advance\@tempdima\td@Y\p@ \Numero\t@Y\@tempdima \MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% \def\SubVect#1from#2to#3{\GetCoord(#1)\tu@X\tu@Y \GetCoord(#2)\td@X\td@Y \@tempdima\td@X\p@ \advance\@tempdima-\tu@X\p@ \Numero\t@X\@tempdima \@tempdima\td@Y\p@ \advance\@tempdima-\tu@Y\p@ \Numero\t@Y\@tempdima \MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% \def\MultVect#1by{\@ifstar{\@ConjMultVect#1by}{\@MultVect#1by}}% \def\@MultVect#1by#2to#3{\GetCoord(#1)\tu@X\tu@Y \GetCoord(#2)\td@X\td@Y \@tempdima\tu@X\p@ \@tempdimb\tu@Y\p@ \@tempdimc=\td@X\@tempdima\advance\@tempdimc-\td@Y\@tempdimb \Numero\t@X\@tempdimc \@tempdimc=\td@Y\@tempdima\advance\@tempdimc\td@X\@tempdimb \Numero\t@Y\@tempdimc \MakeVectorFrom\t@X\t@Y to#3\ignorespaces}% \def\@ConjMultVect#1by#2to#3{\GetCoord(#1)\tu@X\tu@Y \GetCoord(#2)\td@X\td@Y \@tempdima\tu@X\p@ \@tempdimb\tu@Y\p@ \@tempdimc=\td@X\@tempdima\advance\@tempdimc+\td@Y\@tempdimb \Numero\t@X\@tempdimc \@tempdimc=\td@X\@tempdimb\advance\@tempdimc-\td@Y\@tempdima \Numero\t@Y\@tempdimc \MakeVectorFrom\t@X\t@Y to#3\ignorespaces} \def\DivVect#1by#2to#3{\ModAndDirOfVect#2to\@Mod and\@Dir \DividE\p@ by\@Mod\p@ to\@Mod \ConjVect\@Dir to\@Dir \ScaleVect#1by\@Mod to\@tempa \MultVect\@tempa by\@Dir to#3\ignorespaces}% \def\Arc(#1)(#2)#3{\begingroup \@tdA=#3\p@ \ifdim\@tdA=\z@\else \@Arc(#1)(#2)% \fi \endgroup\ignorespaces}% \def\@Arc(#1)(#2){% \ifdim\@tdA>\z@ \let\Segno+% \else \@tdA=-\@tdA \let\Segno-% \fi \Numero\@gradi\@tdA \ifdim\@tdA>360\p@ \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees and gets reduced\MessageBreak% to the range 0--360 taking the sign into consideration}% \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}% \fi \SubVect#2from#1to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun \CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY \@@Arc \pIIe@strokeGraph\ignorespaces}% \def\@@Arc{% \pIIe@moveto{\@pPunX\unitlength}{\@pPunY\unitlength}% \ifdim\@tdA>180\p@ \advance\@tdA-180\p@ \Numero\@gradi\@tdA \SubVect\@pPun from\@Cent to\@V \AddVect\@V and\@Cent to\@sPun \MultVect\@V by0,-1.3333333to\@V \if\Segno-\ScaleVect\@V by-1to\@V\fi \AddVect\@pPun and\@V to\@pcPun \AddVect\@sPun and\@V to\@scPun \GetCoord(\@pcPun)\@pcPunX\@pcPunY \GetCoord(\@scPun)\@scPunX\@scPunY \GetCoord(\@sPun)\@sPunX\@sPunY \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}% {\@scPunX\unitlength}{\@scPunY\unitlength}% {\@sPunX\unitlength}{\@sPunY\unitlength}% \CopyVect\@sPun to\@pPun \fi \ifdim\@tdA>\z@ \DirFromAngle\@gradi to\@Dir \if\Segno-\ConjVect\@Dir to\@Dir \fi \SubVect\@Cent from\@pPun to\@V \MultVect\@V by\@Dir to\@V \AddVect\@Cent and\@V to\@sPun \@tdA=.5\@tdA \Numero\@gradi\@tdA \DirFromAngle\@gradi to\@Phimezzi \GetCoord(\@Phimezzi)\@cosphimezzi\@sinphimezzi \@tdB=1.3333333\p@ \@tdB=\@Raggio\@tdB \@tdC=\p@ \advance\@tdC -\@cosphimezzi\p@ \Numero\@tempa\@tdC \@tdB=\@tempa\@tdB \DividE\@tdB by\@sinphimezzi\p@ to\@cZ \ScaleVect\@Phimezzi by\@cZ to\@Phimezzi \ConjVect\@Phimezzi to\@mPhimezzi \if\Segno-% \let\@tempa\@Phimezzi \let\@Phimezzi\@mPhimezzi \let\@mPhimezzi\@tempa \fi \SubVect\@sPun from\@pPun to\@V \DirOfVect\@V to\@V \MultVect\@Phimezzi by\@V to\@Phimezzi \AddVect\@sPun and\@Phimezzi to\@scPun \ScaleVect\@V by-1to\@V \MultVect\@mPhimezzi by\@V to\@mPhimezzi \AddVect\@pPun and\@mPhimezzi to\@pcPun \GetCoord(\@pcPun)\@pcPunX\@pcPunY \GetCoord(\@scPun)\@scPunX\@scPunY \GetCoord(\@sPun)\@sPunX\@sPunY \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}% {\@scPunX\unitlength}{\@scPunY\unitlength}% {\@sPunX\unitlength}{\@sPunY\unitlength}% \fi} \def\VectorArc(#1)(#2)#3{\begingroup \@tdA=#3\p@ \ifdim\@tdA=\z@\else \@VArc(#1)(#2)% \fi \endgroup\ignorespaces}% \def\VectorARC(#1)(#2)#3{\begingroup \@tdA=#3\p@ \ifdim\@tdA=\z@\else \@VARC(#1)(#2)% \fi \endgroup\ignorespaces}% \def\@VArc(#1)(#2){% \ifdim\@tdA>\z@ \let\Segno+% \else \@tdA=-\@tdA \let\Segno-% \fi \Numero\@gradi\@tdA \ifdim\@tdA>360\p@ \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees and gets reduced\MessageBreak% to the range 0--360 taking the sign into consideration}% \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}% \fi \SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun \@tdE=\pIIe@FAW\@wholewidth \@tdE=\pIIe@FAL\@tdE \DividE\@tdE by \@Raggio\unitlength to\DeltaGradi \@tdD=\DeltaGradi\p@ \@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD \@tdD=\ifx\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD \DirFromAngle\@tempa to\@Dir \MultVect\@V by\@Dir to\@sPun \edef\@tempA{\ifx\Segno-\m@ne\else\@ne\fi}% \MultVect\@sPun by 0,\@tempA to\@vPun \DirOfVect\@vPun to\@Dir \AddVect\@sPun and #1 to \@sPun \GetCoord(\@sPun)\@tdX\@tdY \@tdD\ifx\Segno--\fi\DeltaGradi\p@ \@tdD=.5\@tdD \Numero\DeltaGradi\@tdD \DirFromAngle\DeltaGradi to\@Dird \MultVect\@Dir by*\@Dird to\@Dir \GetCoord(\@Dir)\@xnum\@ynum \put(\@tdX,\@tdY){\vector(\@xnum,\@ynum){0}}% \@tdE =\ifx\Segno--\fi\DeltaGradi\p@ \advance\@tdA -\@tdE \Numero\@gradi\@tdA \CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY \@@Arc \pIIe@strokeGraph\ignorespaces}% \def\@VARC(#1)(#2){% \ifdim\@tdA>\z@ \let\Segno+% \else \@tdA=-\@tdA \let\Segno-% \fi \Numero\@gradi\@tdA \ifdim\@tdA>360\p@ \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees and gets reduced\MessageBreak% to the range 0--360 taking the sign into consideration}% \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}% \fi \SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun \@tdE=\pIIe@FAW\@wholewidth \@tdE=0.8\@tdE \DividE\@tdE by \@Raggio\unitlength to\DeltaGradi \@tdD=\DeltaGradi\p@ \@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD \@tdD=\ifx\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD \DirFromAngle\@tempa to\@Dir \MultVect\@V by\@Dir to\@sPun \edef\@tempA{\ifx\Segno-\m@ne\else\@ne\fi}% \MultVect\@sPun by 0,\@tempA to\@vPun \DirOfVect\@vPun to\@Dir \AddVect\@sPun and #1 to \@sPun \GetCoord(\@sPun)\@tdX\@tdY \@tdD\ifx\Segno--\fi\DeltaGradi\p@ \@tdD=.5\@tdD \Numero\@tempB\@tdD \DirFromAngle\@tempB to\@Dird \MultVect\@Dir by*\@Dird to\@Dir \GetCoord(\@Dir)\@xnum\@ynum \put(\@tdX,\@tdY){\vector(\@xnum,\@ynum){0}}% \@tdE =\DeltaGradi\p@ \advance\@tdA -2\@tdE \Numero\@gradi\@tdA \CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY \SubVect\@Cent from\@pPun to \@V \edef\@tempa{\ifx\Segno-\else-\fi\@ne}% \MultVect\@V by0,\@tempa to\@vPun \@tdE\ifx\Segno--\fi\DeltaGradi\p@ \Numero\@tempB{0.5\@tdE}% \DirFromAngle\@tempB to\@Dird \MultVect\@vPun by\@Dird to\@vPun \DirOfVect\@vPun to\@Dir\GetCoord(\@Dir)\@xnum\@ynum \put(\@pPunX,\@pPunY){\vector(\@xnum,\@ynum){0}} \edef\@tempa{\ifx\Segno--\fi\DeltaGradi}% \DirFromAngle\@tempa to \@Dir \SubVect\@Cent from\@pPun to\@V \MultVect\@V by\@Dir to\@V \AddVect\@Cent and\@V to\@pPun \GetCoord(\@pPun)\@pPunX\@pPunY \@@Arc \pIIe@strokeGraph\ignorespaces}% \def\CurveBetween#1and#2WithDirs#3and#4{% \StartCurveAt#1WithDir{#3}\relax \CurveTo#2WithDir{#4}\CurveFinish}% \def\StartCurveAt#1WithDir#2{% \begingroup \GetCoord(#1)\@tempa\@tempb \CopyVect\@tempa,\@tempb to\@Pzero \pIIe@moveto{\@tempa\unitlength}{\@tempb\unitlength}% \GetCoord(#2)\@tempa\@tempb \CopyVect\@tempa,\@tempb to\@Dzero \DirOfVect\@Dzero to\@Dzero} \def\ChangeDir<#1>{% \GetCoord(#1)\@tempa\@tempb \CopyVect\@tempa,\@tempb to\@Dzero \DirOfVect\@Dzero to\@Dzero \ignorespaces} \def\CurveFinish{\pIIe@strokeGraph\endgroup\ignorespaces}% \def\CurveTo#1WithDir#2{% \def\@Puno{#1}\def\@Duno{#2}\DirOfVect\@Duno to\@Duno \DistanceAndDirOfVect\@Puno minus\@Pzero to\@Chord and\@DirChord \MultVect\@Dzero by*\@DirChord to \@Dpzero \MultVect\@Duno by*\@DirChord to \@Dpuno \GetCoord(\@Dpzero)\@Xpzero\@Ypzero \GetCoord(\@Dpuno)\@Xpuno\@Ypuno \ifdim\@Xpzero\p@=\z@ \ifdim\@Xpuno\p@=\z@ \@tdA=0.666666\p@ \Numero\@Mcpzero{\@Chord\@tdA}% \edef\@Mcpuno{\@Mcpzero}% \else \@tdA=0.666666\p@ \Numero\@Mcpzero{\@Chord\@tdA}% \SetCPmodule\@Mcpuno from\@ne\@Chord\@Dpuno% \fi \else \ifdim\@Xpuno\p@=\z@ \@tdA=0.666666\p@ \Numero\@Mcpuno{\@Chord\@tdA}% \SetCPmodule\@Mcpzero from\@ne\@Chord\@Dpzero% \else \ifdim\@Ypzero\p@=\z@ \@tdA=0.333333\p@ \Numero\@Mcpzero{\@Chord\@tdA}% \ifdim\@Ypuno\p@=\z@ \edef\@Mcpuno{\@Mcpzero}% \fi \else \ifdim\@Ypuno\p@=\z@ \@tdA=0.333333\p@ \Numero\@Mcpuno{\@Chord\@tdA}% \SetCPmodule\@Mcpzero from\@ne\@Chord\@Dpzero \else \@tdA=\@Ypzero\p@ \@tdA=\@Ypuno\@tdA \ifdim\@tdA>\z@ \ConjVect\@Dpuno to\@Dwpuno \else \edef\@Dwpuno{\@Dpuno}% \fi \GetCoord(\@Dwpuno)\@Xwpuno\@Ywpuno \@tdA=\@Xpzero\p@ \@tdA=\@Ywpuno\@tdA \@tdB=\@Xwpuno\p@ \@tdB=\@Ypzero\@tdB \DividE\@tdB by\@tdA to\@Fact \@tdC=\p@ \advance\@tdC-\@Fact\p@ \ifdim\@tdC<\z@ \@tdC=-\@tdC\fi \DividE\p@ by \@Fact\p@ to\@Fact \@tdD=\p@ \advance\@tdD-\@Fact\p@ \ifdim\@tdD<\z@ \@tdD=-\@tdD\fi \ifdim\@tdD<0.0001\p@ \def\@factzero{1}% \def\@factuno{1}% \else \DividE\p@ by\@tdC to\@factzero \DividE\p@ by\@tdD to\@factuno \fi \SetCPmodule\@Mcpzero from\@factzero\@Chord\@Dpzero \SetCPmodule\@Mcpuno from\@factuno\@Chord\@Dwpuno \fi \fi \fi \fi \ScaleVect\@Dzero by\@Mcpzero to\@CPzero \AddVect\@Pzero and\@CPzero to\@CPzero \ScaleVect\@Duno by\@Mcpuno to\@CPuno \SubVect\@CPuno from\@Puno to\@CPuno \GetCoord(\@Puno)\@XPuno\@YPuno \GetCoord(\@CPzero)\@XCPzero\@YCPzero \GetCoord(\@CPuno)\@XCPuno\@YCPuno \pIIe@curveto{\@XCPzero\unitlength}{\@YCPzero\unitlength}% {\@XCPuno\unitlength}{\@YCPuno\unitlength}% {\@XPuno\unitlength}{\@YPuno\unitlength}% \CopyVect\@Puno to\@Pzero \CopyVect\@Duno to\@Dzero \ignorespaces}% \def\SetCPmodule#1from#2#3#4{% \GetCoord(#4)\t@X\t@Y \@tdA=#3\p@ \@tdA=#2\@tdA \@tdA=1.333333\@tdA \@tdB=\p@ \advance\@tdB +\t@X\p@ \DividE\@tdA by\@tdB to#1\relax \ignorespaces}% \def\Curve(#1)<#2>{% \StartCurveAt#1WithDir{#2}% \@ifnextchar\lp@r\@Curve{% \PackageWarning{curve2e}{% Curve specifications must contain at least two nodes!\Messagebreak Please, control your Curve specifications\MessageBreak}}} \def\@Curve(#1)<#2>{% \CurveTo#1WithDir{#2}% \@ifnextchar\lp@r\@Curve{% \@ifnextchar[\@ChangeDir\CurveFinish}} \def\@ChangeDir[#1]{\ChangeDir<#1>\@Curve} \endinput %% %% End of file `curve2e.sty'.